@itwin/core-react 4.11.0 → 4.13.0

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 (494) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/ContributeGuidelines.md +2 -2
  3. package/lib/cjs/core-react/UiCore.d.ts +2 -6
  4. package/lib/cjs/core-react/UiCore.d.ts.map +1 -1
  5. package/lib/cjs/core-react/UiCore.js +2 -18
  6. package/lib/cjs/core-react/UiCore.js.map +1 -1
  7. package/lib/cjs/core-react/UiCore.json +31 -0
  8. package/lib/cjs/core-react/autosuggest/AutoSuggest.d.ts +1 -1
  9. package/lib/cjs/core-react/autosuggest/AutoSuggest.d.ts.map +1 -1
  10. package/lib/cjs/core-react/autosuggest/AutoSuggest.js +2 -2
  11. package/lib/cjs/core-react/autosuggest/AutoSuggest.js.map +1 -1
  12. package/lib/cjs/core-react/badge/Badge.d.ts +6 -9
  13. package/lib/cjs/core-react/badge/Badge.d.ts.map +1 -1
  14. package/lib/cjs/core-react/badge/Badge.js +10 -9
  15. package/lib/cjs/core-react/badge/Badge.js.map +1 -1
  16. package/lib/{esm/core-react/badge/BadgeUtilities.d.ts → cjs/core-react/badge/BadgeType.d.ts} +1 -9
  17. package/lib/cjs/core-react/badge/BadgeType.d.ts.map +1 -0
  18. package/lib/cjs/core-react/{useTranslation.js → badge/BadgeType.js} +9 -13
  19. package/lib/cjs/core-react/badge/BadgeType.js.map +1 -0
  20. package/lib/cjs/core-react/badge/NewBadge.d.ts +2 -3
  21. package/lib/cjs/core-react/badge/NewBadge.d.ts.map +1 -1
  22. package/lib/cjs/core-react/badge/NewBadge.js +6 -7
  23. package/lib/cjs/core-react/badge/NewBadge.js.map +1 -1
  24. package/lib/cjs/core-react/badge/NewBadge.scss +2 -3
  25. package/lib/cjs/core-react/badge/TechnicalPreviewBadge.d.ts +10 -0
  26. package/lib/cjs/core-react/badge/TechnicalPreviewBadge.d.ts.map +1 -0
  27. package/lib/cjs/core-react/badge/TechnicalPreviewBadge.js +29 -0
  28. package/lib/cjs/core-react/badge/TechnicalPreviewBadge.js.map +1 -0
  29. package/lib/cjs/core-react/badge/{Badge.scss → TechnicalPreviewBadge.scss} +1 -7
  30. package/lib/cjs/core-react/base/Centered.d.ts +1 -0
  31. package/lib/cjs/core-react/base/Centered.d.ts.map +1 -1
  32. package/lib/cjs/core-react/base/Centered.js +2 -0
  33. package/lib/cjs/core-react/base/Centered.js.map +1 -1
  34. package/lib/cjs/core-react/base/Div.d.ts +2 -0
  35. package/lib/cjs/core-react/base/Div.d.ts.map +1 -1
  36. package/lib/cjs/core-react/base/Div.js +2 -0
  37. package/lib/cjs/core-react/base/Div.js.map +1 -1
  38. package/lib/cjs/core-react/base/DivWithOutsideClick.d.ts +1 -0
  39. package/lib/cjs/core-react/base/DivWithOutsideClick.d.ts.map +1 -1
  40. package/lib/cjs/core-react/base/DivWithOutsideClick.js +1 -0
  41. package/lib/cjs/core-react/base/DivWithOutsideClick.js.map +1 -1
  42. package/lib/cjs/core-react/base/FillCentered.d.ts +1 -0
  43. package/lib/cjs/core-react/base/FillCentered.d.ts.map +1 -1
  44. package/lib/cjs/core-react/base/FillCentered.js +2 -0
  45. package/lib/cjs/core-react/base/FillCentered.js.map +1 -1
  46. package/lib/cjs/core-react/base/FlexWrapContainer.d.ts +1 -0
  47. package/lib/cjs/core-react/base/FlexWrapContainer.d.ts.map +1 -1
  48. package/lib/cjs/core-react/base/FlexWrapContainer.js +2 -0
  49. package/lib/cjs/core-react/base/FlexWrapContainer.js.map +1 -1
  50. package/lib/cjs/core-react/base/Gap.d.ts +2 -0
  51. package/lib/cjs/core-react/base/Gap.d.ts.map +1 -1
  52. package/lib/cjs/core-react/base/Gap.js +3 -1
  53. package/lib/cjs/core-react/base/Gap.js.map +1 -1
  54. package/lib/cjs/core-react/base/ScrollView.d.ts +1 -0
  55. package/lib/cjs/core-react/base/ScrollView.d.ts.map +1 -1
  56. package/lib/cjs/core-react/base/ScrollView.js +2 -0
  57. package/lib/cjs/core-react/base/ScrollView.js.map +1 -1
  58. package/lib/cjs/core-react/button/UnderlinedButton.d.ts +2 -0
  59. package/lib/cjs/core-react/button/UnderlinedButton.d.ts.map +1 -1
  60. package/lib/cjs/core-react/button/UnderlinedButton.js +2 -0
  61. package/lib/cjs/core-react/button/UnderlinedButton.js.map +1 -1
  62. package/lib/cjs/core-react/checklistbox/CheckListBox.d.ts +4 -0
  63. package/lib/cjs/core-react/checklistbox/CheckListBox.d.ts.map +1 -1
  64. package/lib/cjs/core-react/checklistbox/CheckListBox.js +4 -0
  65. package/lib/cjs/core-react/checklistbox/CheckListBox.js.map +1 -1
  66. package/lib/cjs/core-react/contextmenu/ContextMenu.d.ts.map +1 -1
  67. package/lib/cjs/core-react/contextmenu/ContextMenu.js +1 -2
  68. package/lib/cjs/core-react/contextmenu/ContextMenu.js.map +1 -1
  69. package/lib/cjs/core-react/contextmenu/ContextMenuItem.d.ts +1 -1
  70. package/lib/cjs/core-react/contextmenu/ContextMenuItem.d.ts.map +1 -1
  71. package/lib/cjs/core-react/contextmenu/ContextMenuItem.js +3 -3
  72. package/lib/cjs/core-react/contextmenu/ContextMenuItem.js.map +1 -1
  73. package/lib/cjs/core-react/contextmenu/ContextSubMenu.d.ts.map +1 -1
  74. package/lib/cjs/core-react/contextmenu/ContextSubMenu.js +3 -3
  75. package/lib/cjs/core-react/contextmenu/ContextSubMenu.js.map +1 -1
  76. package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js +3 -5
  77. package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
  78. package/lib/cjs/core-react/dialog/Dialog.d.ts +4 -0
  79. package/lib/cjs/core-react/dialog/Dialog.d.ts.map +1 -1
  80. package/lib/cjs/core-react/dialog/Dialog.js +69 -53
  81. package/lib/cjs/core-react/dialog/Dialog.js.map +1 -1
  82. package/lib/cjs/core-react/dialog/GlobalDialog.d.ts +3 -0
  83. package/lib/cjs/core-react/dialog/GlobalDialog.d.ts.map +1 -1
  84. package/lib/cjs/core-react/dialog/GlobalDialog.js +7 -3
  85. package/lib/cjs/core-react/dialog/GlobalDialog.js.map +1 -1
  86. package/lib/cjs/core-react/elementseparator/ElementSeparator.d.ts +4 -2
  87. package/lib/cjs/core-react/elementseparator/ElementSeparator.d.ts.map +1 -1
  88. package/lib/cjs/core-react/elementseparator/ElementSeparator.js +5 -3
  89. package/lib/cjs/core-react/elementseparator/ElementSeparator.js.map +1 -1
  90. package/lib/cjs/core-react/expandable/ExpandableList.d.ts +3 -3
  91. package/lib/cjs/core-react/expandable/ExpandableList.d.ts.map +1 -1
  92. package/lib/cjs/core-react/expandable/ExpandableList.js +5 -2
  93. package/lib/cjs/core-react/expandable/ExpandableList.js.map +1 -1
  94. package/lib/cjs/core-react/hocs/withOnOutsideClick.js +1 -2
  95. package/lib/cjs/core-react/hocs/withOnOutsideClick.js.map +1 -1
  96. package/lib/cjs/core-react/icons/IconComponent.d.ts.map +1 -1
  97. package/lib/cjs/core-react/icons/IconComponent.js +22 -12
  98. package/lib/cjs/core-react/icons/IconComponent.js.map +1 -1
  99. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.d.ts +3 -2
  100. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.d.ts.map +1 -1
  101. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js +3 -2
  102. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
  103. package/lib/cjs/core-react/inputs/InputLabel.d.ts +2 -0
  104. package/lib/cjs/core-react/inputs/InputLabel.d.ts.map +1 -1
  105. package/lib/cjs/core-react/inputs/InputLabel.js +5 -0
  106. package/lib/cjs/core-react/inputs/InputLabel.js.map +1 -1
  107. package/lib/cjs/core-react/inputs/InputStatus.d.ts +1 -0
  108. package/lib/cjs/core-react/inputs/InputStatus.d.ts.map +1 -1
  109. package/lib/cjs/core-react/inputs/InputStatus.js +1 -0
  110. package/lib/cjs/core-react/inputs/InputStatus.js.map +1 -1
  111. package/lib/cjs/core-react/inputs/LabeledComponentProps.d.ts +2 -0
  112. package/lib/cjs/core-react/inputs/LabeledComponentProps.d.ts.map +1 -1
  113. package/lib/cjs/core-react/inputs/LabeledComponentProps.js.map +1 -1
  114. package/lib/cjs/core-react/inputs/iconinput/IconInput.d.ts +2 -0
  115. package/lib/cjs/core-react/inputs/iconinput/IconInput.d.ts.map +1 -1
  116. package/lib/cjs/core-react/inputs/iconinput/IconInput.js +3 -0
  117. package/lib/cjs/core-react/inputs/iconinput/IconInput.js.map +1 -1
  118. package/lib/cjs/core-react/inputs/numberinput/NumberInput.d.ts +3 -0
  119. package/lib/cjs/core-react/inputs/numberinput/NumberInput.d.ts.map +1 -1
  120. package/lib/cjs/core-react/inputs/numberinput/NumberInput.js +1 -0
  121. package/lib/cjs/core-react/inputs/numberinput/NumberInput.js.map +1 -1
  122. package/lib/cjs/core-react/l10n/LocalizationProvider.d.ts +20 -0
  123. package/lib/cjs/core-react/l10n/LocalizationProvider.d.ts.map +1 -0
  124. package/lib/cjs/core-react/l10n/LocalizationProvider.js +29 -0
  125. package/lib/cjs/core-react/l10n/LocalizationProvider.js.map +1 -0
  126. package/lib/cjs/core-react/l10n/usePackageTranslation.d.ts +15 -0
  127. package/lib/cjs/core-react/l10n/usePackageTranslation.d.ts.map +1 -0
  128. package/lib/cjs/core-react/l10n/usePackageTranslation.js +64 -0
  129. package/lib/cjs/core-react/l10n/usePackageTranslation.js.map +1 -0
  130. package/lib/cjs/core-react/l10n/useTranslation.d.ts +7 -0
  131. package/lib/cjs/core-react/l10n/useTranslation.d.ts.map +1 -0
  132. package/lib/cjs/core-react/l10n/useTranslation.js +30 -0
  133. package/lib/cjs/core-react/l10n/useTranslation.js.map +1 -0
  134. package/lib/cjs/core-react/listbox/Listbox.d.ts +14 -14
  135. package/lib/cjs/core-react/listbox/Listbox.d.ts.map +1 -1
  136. package/lib/cjs/core-react/listbox/Listbox.js +8 -10
  137. package/lib/cjs/core-react/listbox/Listbox.js.map +1 -1
  138. package/lib/cjs/core-react/loading/LoadingBar.d.ts +3 -2
  139. package/lib/cjs/core-react/loading/LoadingBar.d.ts.map +1 -1
  140. package/lib/cjs/core-react/loading/LoadingBar.js +2 -2
  141. package/lib/cjs/core-react/loading/LoadingBar.js.map +1 -1
  142. package/lib/cjs/core-react/loading/LoadingPrompt.d.ts +3 -2
  143. package/lib/cjs/core-react/loading/LoadingPrompt.d.ts.map +1 -1
  144. package/lib/cjs/core-react/loading/LoadingPrompt.js +2 -2
  145. package/lib/cjs/core-react/loading/LoadingPrompt.js.map +1 -1
  146. package/lib/cjs/core-react/loading/LoadingSpinner.d.ts +4 -2
  147. package/lib/cjs/core-react/loading/LoadingSpinner.d.ts.map +1 -1
  148. package/lib/cjs/core-react/loading/LoadingSpinner.js +2 -2
  149. package/lib/cjs/core-react/loading/LoadingSpinner.js.map +1 -1
  150. package/lib/cjs/core-react/loading/LoadingStatus.d.ts +3 -2
  151. package/lib/cjs/core-react/loading/LoadingStatus.d.ts.map +1 -1
  152. package/lib/cjs/core-react/loading/LoadingStatus.js +2 -2
  153. package/lib/cjs/core-react/loading/LoadingStatus.js.map +1 -1
  154. package/lib/cjs/core-react/messagebox/MessageBox.d.ts.map +1 -1
  155. package/lib/cjs/core-react/messagebox/MessageBox.js +3 -1
  156. package/lib/cjs/core-react/messagebox/MessageBox.js.map +1 -1
  157. package/lib/cjs/core-react/notification/MessageRenderer.js +1 -1
  158. package/lib/cjs/core-react/notification/MessageRenderer.js.map +1 -1
  159. package/lib/cjs/core-react/popup/Popup.js +4 -8
  160. package/lib/cjs/core-react/popup/Popup.js.map +1 -1
  161. package/lib/cjs/core-react/radialmenu/Annulus.d.ts +7 -8
  162. package/lib/cjs/core-react/radialmenu/Annulus.d.ts.map +1 -1
  163. package/lib/cjs/core-react/radialmenu/Annulus.js +7 -8
  164. package/lib/cjs/core-react/radialmenu/Annulus.js.map +1 -1
  165. package/lib/cjs/core-react/radialmenu/RadialMenu.d.ts +0 -1
  166. package/lib/cjs/core-react/radialmenu/RadialMenu.d.ts.map +1 -1
  167. package/lib/cjs/core-react/radialmenu/RadialMenu.js.map +1 -1
  168. package/lib/cjs/core-react/searchbox/SearchBox.d.ts +3 -3
  169. package/lib/cjs/core-react/searchbox/SearchBox.d.ts.map +1 -1
  170. package/lib/cjs/core-react/searchbox/SearchBox.js +15 -9
  171. package/lib/cjs/core-react/searchbox/SearchBox.js.map +1 -1
  172. package/lib/cjs/core-react/settings/SettingsContainer.d.ts.map +1 -1
  173. package/lib/cjs/core-react/settings/SettingsContainer.js +8 -4
  174. package/lib/cjs/core-react/settings/SettingsContainer.js.map +1 -1
  175. package/lib/cjs/core-react/settings/SettingsManager.d.ts +10 -7
  176. package/lib/cjs/core-react/settings/SettingsManager.d.ts.map +1 -1
  177. package/lib/cjs/core-react/settings/SettingsManager.js +14 -12
  178. package/lib/cjs/core-react/settings/SettingsManager.js.map +1 -1
  179. package/lib/cjs/core-react/tabs/Tabs.d.ts +5 -5
  180. package/lib/cjs/core-react/tabs/Tabs.d.ts.map +1 -1
  181. package/lib/cjs/core-react/tabs/Tabs.js +1 -0
  182. package/lib/cjs/core-react/tabs/Tabs.js.map +1 -1
  183. package/lib/cjs/core-react/tabs/VerticalTabs.d.ts +1 -0
  184. package/lib/cjs/core-react/tabs/VerticalTabs.d.ts.map +1 -1
  185. package/lib/cjs/core-react/tabs/VerticalTabs.js +2 -0
  186. package/lib/cjs/core-react/tabs/VerticalTabs.js.map +1 -1
  187. package/lib/cjs/core-react/text/BlockText.d.ts +1 -0
  188. package/lib/cjs/core-react/text/BlockText.d.ts.map +1 -1
  189. package/lib/cjs/core-react/text/BlockText.js +2 -0
  190. package/lib/cjs/core-react/text/BlockText.js.map +1 -1
  191. package/lib/cjs/core-react/text/BodyText.d.ts +1 -1
  192. package/lib/cjs/core-react/text/BodyText.d.ts.map +1 -1
  193. package/lib/cjs/core-react/text/BodyText.js +2 -1
  194. package/lib/cjs/core-react/text/BodyText.js.map +1 -1
  195. package/lib/cjs/core-react/text/DisabledText.d.ts +1 -0
  196. package/lib/cjs/core-react/text/DisabledText.d.ts.map +1 -1
  197. package/lib/cjs/core-react/text/DisabledText.js +2 -1
  198. package/lib/cjs/core-react/text/DisabledText.js.map +1 -1
  199. package/lib/cjs/core-react/text/MutedText.d.ts.map +1 -1
  200. package/lib/cjs/core-react/text/MutedText.js +1 -0
  201. package/lib/cjs/core-react/text/MutedText.js.map +1 -1
  202. package/lib/cjs/core-react/text/StyledText.d.ts +1 -0
  203. package/lib/cjs/core-react/text/StyledText.d.ts.map +1 -1
  204. package/lib/cjs/core-react/text/StyledText.js.map +1 -1
  205. package/lib/cjs/core-react/text/TextProps.d.ts +1 -0
  206. package/lib/cjs/core-react/text/TextProps.d.ts.map +1 -1
  207. package/lib/cjs/core-react/text/TextProps.js.map +1 -1
  208. package/lib/cjs/core-react/tree/ExpansionToggle.d.ts +1 -3
  209. package/lib/cjs/core-react/tree/ExpansionToggle.d.ts.map +1 -1
  210. package/lib/cjs/core-react/tree/ExpansionToggle.js +9 -10
  211. package/lib/cjs/core-react/tree/ExpansionToggle.js.map +1 -1
  212. package/lib/cjs/core-react/tree/Node.js +1 -2
  213. package/lib/cjs/core-react/tree/Node.js.map +1 -1
  214. package/lib/cjs/core-react/utils/IconWebComponent.d.ts +4 -2
  215. package/lib/cjs/core-react/utils/IconWebComponent.d.ts.map +1 -1
  216. package/lib/cjs/core-react/utils/IconWebComponent.js +10 -6
  217. package/lib/cjs/core-react/utils/IconWebComponent.js.map +1 -1
  218. package/lib/cjs/core-react/utils/getCssVariable.js +1 -1
  219. package/lib/cjs/core-react/utils/getCssVariable.js.map +1 -1
  220. package/lib/cjs/core-react/utils/getObjectClassName.js +2 -3
  221. package/lib/cjs/core-react/utils/getObjectClassName.js.map +1 -1
  222. package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.d.ts +4 -1
  223. package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.d.ts.map +1 -1
  224. package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js +5 -2
  225. package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
  226. package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.d.ts +1 -1
  227. package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js +2 -3
  228. package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
  229. package/lib/cjs/core-react/utils/hooks/useResizeObserver.d.ts.map +1 -1
  230. package/lib/cjs/core-react/utils/hooks/useResizeObserver.js +12 -16
  231. package/lib/cjs/core-react/utils/hooks/useResizeObserver.js.map +1 -1
  232. package/lib/cjs/core-react.d.ts +3 -3
  233. package/lib/cjs/core-react.d.ts.map +1 -1
  234. package/lib/cjs/core-react.js +12 -9
  235. package/lib/cjs/core-react.js.map +1 -1
  236. package/lib/esm/core-react/UiCore.d.ts +2 -6
  237. package/lib/esm/core-react/UiCore.d.ts.map +1 -1
  238. package/lib/esm/core-react/UiCore.js +2 -18
  239. package/lib/esm/core-react/UiCore.js.map +1 -1
  240. package/lib/esm/core-react/UiCore.json +31 -0
  241. package/lib/esm/core-react/autosuggest/AutoSuggest.d.ts +1 -1
  242. package/lib/esm/core-react/autosuggest/AutoSuggest.d.ts.map +1 -1
  243. package/lib/esm/core-react/autosuggest/AutoSuggest.js +1 -1
  244. package/lib/esm/core-react/autosuggest/AutoSuggest.js.map +1 -1
  245. package/lib/esm/core-react/badge/Badge.d.ts +6 -9
  246. package/lib/esm/core-react/badge/Badge.d.ts.map +1 -1
  247. package/lib/esm/core-react/badge/Badge.js +10 -9
  248. package/lib/esm/core-react/badge/Badge.js.map +1 -1
  249. package/lib/{cjs/core-react/badge/BadgeUtilities.d.ts → esm/core-react/badge/BadgeType.d.ts} +1 -9
  250. package/lib/esm/core-react/badge/BadgeType.d.ts.map +1 -0
  251. package/lib/esm/core-react/badge/BadgeType.js +13 -0
  252. package/lib/esm/core-react/badge/BadgeType.js.map +1 -0
  253. package/lib/esm/core-react/badge/NewBadge.d.ts +2 -3
  254. package/lib/esm/core-react/badge/NewBadge.d.ts.map +1 -1
  255. package/lib/esm/core-react/badge/NewBadge.js +6 -7
  256. package/lib/esm/core-react/badge/NewBadge.js.map +1 -1
  257. package/lib/esm/core-react/badge/NewBadge.scss +2 -3
  258. package/lib/esm/core-react/badge/TechnicalPreviewBadge.d.ts +10 -0
  259. package/lib/esm/core-react/badge/TechnicalPreviewBadge.d.ts.map +1 -0
  260. package/lib/esm/core-react/badge/TechnicalPreviewBadge.js +25 -0
  261. package/lib/esm/core-react/badge/TechnicalPreviewBadge.js.map +1 -0
  262. package/lib/esm/core-react/badge/{Badge.scss → TechnicalPreviewBadge.scss} +1 -7
  263. package/lib/esm/core-react/base/Centered.d.ts +1 -0
  264. package/lib/esm/core-react/base/Centered.d.ts.map +1 -1
  265. package/lib/esm/core-react/base/Centered.js +2 -0
  266. package/lib/esm/core-react/base/Centered.js.map +1 -1
  267. package/lib/esm/core-react/base/Div.d.ts +2 -0
  268. package/lib/esm/core-react/base/Div.d.ts.map +1 -1
  269. package/lib/esm/core-react/base/Div.js +2 -0
  270. package/lib/esm/core-react/base/Div.js.map +1 -1
  271. package/lib/esm/core-react/base/DivWithOutsideClick.d.ts +1 -0
  272. package/lib/esm/core-react/base/DivWithOutsideClick.d.ts.map +1 -1
  273. package/lib/esm/core-react/base/DivWithOutsideClick.js +1 -0
  274. package/lib/esm/core-react/base/DivWithOutsideClick.js.map +1 -1
  275. package/lib/esm/core-react/base/FillCentered.d.ts +1 -0
  276. package/lib/esm/core-react/base/FillCentered.d.ts.map +1 -1
  277. package/lib/esm/core-react/base/FillCentered.js +2 -0
  278. package/lib/esm/core-react/base/FillCentered.js.map +1 -1
  279. package/lib/esm/core-react/base/FlexWrapContainer.d.ts +1 -0
  280. package/lib/esm/core-react/base/FlexWrapContainer.d.ts.map +1 -1
  281. package/lib/esm/core-react/base/FlexWrapContainer.js +2 -0
  282. package/lib/esm/core-react/base/FlexWrapContainer.js.map +1 -1
  283. package/lib/esm/core-react/base/Gap.d.ts +2 -0
  284. package/lib/esm/core-react/base/Gap.d.ts.map +1 -1
  285. package/lib/esm/core-react/base/Gap.js +3 -1
  286. package/lib/esm/core-react/base/Gap.js.map +1 -1
  287. package/lib/esm/core-react/base/ScrollView.d.ts +1 -0
  288. package/lib/esm/core-react/base/ScrollView.d.ts.map +1 -1
  289. package/lib/esm/core-react/base/ScrollView.js +2 -0
  290. package/lib/esm/core-react/base/ScrollView.js.map +1 -1
  291. package/lib/esm/core-react/button/UnderlinedButton.d.ts +2 -0
  292. package/lib/esm/core-react/button/UnderlinedButton.d.ts.map +1 -1
  293. package/lib/esm/core-react/button/UnderlinedButton.js +2 -0
  294. package/lib/esm/core-react/button/UnderlinedButton.js.map +1 -1
  295. package/lib/esm/core-react/checklistbox/CheckListBox.d.ts +4 -0
  296. package/lib/esm/core-react/checklistbox/CheckListBox.d.ts.map +1 -1
  297. package/lib/esm/core-react/checklistbox/CheckListBox.js +4 -0
  298. package/lib/esm/core-react/checklistbox/CheckListBox.js.map +1 -1
  299. package/lib/esm/core-react/contextmenu/ContextMenu.d.ts.map +1 -1
  300. package/lib/esm/core-react/contextmenu/ContextMenu.js +1 -2
  301. package/lib/esm/core-react/contextmenu/ContextMenu.js.map +1 -1
  302. package/lib/esm/core-react/contextmenu/ContextMenuItem.d.ts +1 -1
  303. package/lib/esm/core-react/contextmenu/ContextMenuItem.d.ts.map +1 -1
  304. package/lib/esm/core-react/contextmenu/ContextMenuItem.js +3 -3
  305. package/lib/esm/core-react/contextmenu/ContextMenuItem.js.map +1 -1
  306. package/lib/esm/core-react/contextmenu/ContextSubMenu.d.ts.map +1 -1
  307. package/lib/esm/core-react/contextmenu/ContextSubMenu.js +3 -3
  308. package/lib/esm/core-react/contextmenu/ContextSubMenu.js.map +1 -1
  309. package/lib/esm/core-react/contextmenu/GlobalContextMenu.js +3 -5
  310. package/lib/esm/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
  311. package/lib/esm/core-react/dialog/Dialog.d.ts +4 -0
  312. package/lib/esm/core-react/dialog/Dialog.d.ts.map +1 -1
  313. package/lib/esm/core-react/dialog/Dialog.js +69 -53
  314. package/lib/esm/core-react/dialog/Dialog.js.map +1 -1
  315. package/lib/esm/core-react/dialog/GlobalDialog.d.ts +3 -0
  316. package/lib/esm/core-react/dialog/GlobalDialog.d.ts.map +1 -1
  317. package/lib/esm/core-react/dialog/GlobalDialog.js +7 -3
  318. package/lib/esm/core-react/dialog/GlobalDialog.js.map +1 -1
  319. package/lib/esm/core-react/elementseparator/ElementSeparator.d.ts +4 -2
  320. package/lib/esm/core-react/elementseparator/ElementSeparator.d.ts.map +1 -1
  321. package/lib/esm/core-react/elementseparator/ElementSeparator.js +5 -3
  322. package/lib/esm/core-react/elementseparator/ElementSeparator.js.map +1 -1
  323. package/lib/esm/core-react/expandable/ExpandableList.d.ts +3 -3
  324. package/lib/esm/core-react/expandable/ExpandableList.d.ts.map +1 -1
  325. package/lib/esm/core-react/expandable/ExpandableList.js +5 -2
  326. package/lib/esm/core-react/expandable/ExpandableList.js.map +1 -1
  327. package/lib/esm/core-react/hocs/withOnOutsideClick.js +1 -2
  328. package/lib/esm/core-react/hocs/withOnOutsideClick.js.map +1 -1
  329. package/lib/esm/core-react/icons/IconComponent.d.ts.map +1 -1
  330. package/lib/esm/core-react/icons/IconComponent.js +21 -11
  331. package/lib/esm/core-react/icons/IconComponent.js.map +1 -1
  332. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.d.ts +3 -2
  333. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.d.ts.map +1 -1
  334. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js +3 -2
  335. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
  336. package/lib/esm/core-react/inputs/InputLabel.d.ts +2 -0
  337. package/lib/esm/core-react/inputs/InputLabel.d.ts.map +1 -1
  338. package/lib/esm/core-react/inputs/InputLabel.js +5 -0
  339. package/lib/esm/core-react/inputs/InputLabel.js.map +1 -1
  340. package/lib/esm/core-react/inputs/InputStatus.d.ts +1 -0
  341. package/lib/esm/core-react/inputs/InputStatus.d.ts.map +1 -1
  342. package/lib/esm/core-react/inputs/InputStatus.js +1 -0
  343. package/lib/esm/core-react/inputs/InputStatus.js.map +1 -1
  344. package/lib/esm/core-react/inputs/LabeledComponentProps.d.ts +2 -0
  345. package/lib/esm/core-react/inputs/LabeledComponentProps.d.ts.map +1 -1
  346. package/lib/esm/core-react/inputs/LabeledComponentProps.js.map +1 -1
  347. package/lib/esm/core-react/inputs/iconinput/IconInput.d.ts +2 -0
  348. package/lib/esm/core-react/inputs/iconinput/IconInput.d.ts.map +1 -1
  349. package/lib/esm/core-react/inputs/iconinput/IconInput.js +3 -0
  350. package/lib/esm/core-react/inputs/iconinput/IconInput.js.map +1 -1
  351. package/lib/esm/core-react/inputs/numberinput/NumberInput.d.ts +3 -0
  352. package/lib/esm/core-react/inputs/numberinput/NumberInput.d.ts.map +1 -1
  353. package/lib/esm/core-react/inputs/numberinput/NumberInput.js +1 -0
  354. package/lib/esm/core-react/inputs/numberinput/NumberInput.js.map +1 -1
  355. package/lib/esm/core-react/l10n/LocalizationProvider.d.ts +20 -0
  356. package/lib/esm/core-react/l10n/LocalizationProvider.d.ts.map +1 -0
  357. package/lib/esm/core-react/l10n/LocalizationProvider.js +24 -0
  358. package/lib/esm/core-react/l10n/LocalizationProvider.js.map +1 -0
  359. package/lib/esm/core-react/l10n/usePackageTranslation.d.ts +15 -0
  360. package/lib/esm/core-react/l10n/usePackageTranslation.d.ts.map +1 -0
  361. package/lib/esm/core-react/l10n/usePackageTranslation.js +60 -0
  362. package/lib/esm/core-react/l10n/usePackageTranslation.js.map +1 -0
  363. package/lib/esm/core-react/l10n/useTranslation.d.ts +7 -0
  364. package/lib/esm/core-react/l10n/useTranslation.d.ts.map +1 -0
  365. package/lib/esm/core-react/l10n/useTranslation.js +26 -0
  366. package/lib/esm/core-react/l10n/useTranslation.js.map +1 -0
  367. package/lib/esm/core-react/listbox/Listbox.d.ts +14 -14
  368. package/lib/esm/core-react/listbox/Listbox.d.ts.map +1 -1
  369. package/lib/esm/core-react/listbox/Listbox.js +8 -10
  370. package/lib/esm/core-react/listbox/Listbox.js.map +1 -1
  371. package/lib/esm/core-react/loading/LoadingBar.d.ts +3 -2
  372. package/lib/esm/core-react/loading/LoadingBar.d.ts.map +1 -1
  373. package/lib/esm/core-react/loading/LoadingBar.js +2 -2
  374. package/lib/esm/core-react/loading/LoadingBar.js.map +1 -1
  375. package/lib/esm/core-react/loading/LoadingPrompt.d.ts +3 -2
  376. package/lib/esm/core-react/loading/LoadingPrompt.d.ts.map +1 -1
  377. package/lib/esm/core-react/loading/LoadingPrompt.js +2 -2
  378. package/lib/esm/core-react/loading/LoadingPrompt.js.map +1 -1
  379. package/lib/esm/core-react/loading/LoadingSpinner.d.ts +4 -2
  380. package/lib/esm/core-react/loading/LoadingSpinner.d.ts.map +1 -1
  381. package/lib/esm/core-react/loading/LoadingSpinner.js +2 -2
  382. package/lib/esm/core-react/loading/LoadingSpinner.js.map +1 -1
  383. package/lib/esm/core-react/loading/LoadingStatus.d.ts +3 -2
  384. package/lib/esm/core-react/loading/LoadingStatus.d.ts.map +1 -1
  385. package/lib/esm/core-react/loading/LoadingStatus.js +2 -2
  386. package/lib/esm/core-react/loading/LoadingStatus.js.map +1 -1
  387. package/lib/esm/core-react/messagebox/MessageBox.d.ts.map +1 -1
  388. package/lib/esm/core-react/messagebox/MessageBox.js +3 -1
  389. package/lib/esm/core-react/messagebox/MessageBox.js.map +1 -1
  390. package/lib/esm/core-react/notification/MessageRenderer.js +1 -1
  391. package/lib/esm/core-react/notification/MessageRenderer.js.map +1 -1
  392. package/lib/esm/core-react/popup/Popup.js +4 -8
  393. package/lib/esm/core-react/popup/Popup.js.map +1 -1
  394. package/lib/esm/core-react/radialmenu/Annulus.d.ts +7 -8
  395. package/lib/esm/core-react/radialmenu/Annulus.d.ts.map +1 -1
  396. package/lib/esm/core-react/radialmenu/Annulus.js +7 -8
  397. package/lib/esm/core-react/radialmenu/Annulus.js.map +1 -1
  398. package/lib/esm/core-react/radialmenu/RadialMenu.d.ts +0 -1
  399. package/lib/esm/core-react/radialmenu/RadialMenu.d.ts.map +1 -1
  400. package/lib/esm/core-react/radialmenu/RadialMenu.js.map +1 -1
  401. package/lib/esm/core-react/searchbox/SearchBox.d.ts +3 -3
  402. package/lib/esm/core-react/searchbox/SearchBox.d.ts.map +1 -1
  403. package/lib/esm/core-react/searchbox/SearchBox.js +15 -9
  404. package/lib/esm/core-react/searchbox/SearchBox.js.map +1 -1
  405. package/lib/esm/core-react/settings/SettingsContainer.d.ts.map +1 -1
  406. package/lib/esm/core-react/settings/SettingsContainer.js +8 -4
  407. package/lib/esm/core-react/settings/SettingsContainer.js.map +1 -1
  408. package/lib/esm/core-react/settings/SettingsManager.d.ts +10 -7
  409. package/lib/esm/core-react/settings/SettingsManager.d.ts.map +1 -1
  410. package/lib/esm/core-react/settings/SettingsManager.js +13 -10
  411. package/lib/esm/core-react/settings/SettingsManager.js.map +1 -1
  412. package/lib/esm/core-react/tabs/Tabs.d.ts +5 -5
  413. package/lib/esm/core-react/tabs/Tabs.d.ts.map +1 -1
  414. package/lib/esm/core-react/tabs/Tabs.js +1 -0
  415. package/lib/esm/core-react/tabs/Tabs.js.map +1 -1
  416. package/lib/esm/core-react/tabs/VerticalTabs.d.ts +1 -0
  417. package/lib/esm/core-react/tabs/VerticalTabs.d.ts.map +1 -1
  418. package/lib/esm/core-react/tabs/VerticalTabs.js +2 -0
  419. package/lib/esm/core-react/tabs/VerticalTabs.js.map +1 -1
  420. package/lib/esm/core-react/text/BlockText.d.ts +1 -0
  421. package/lib/esm/core-react/text/BlockText.d.ts.map +1 -1
  422. package/lib/esm/core-react/text/BlockText.js +2 -0
  423. package/lib/esm/core-react/text/BlockText.js.map +1 -1
  424. package/lib/esm/core-react/text/BodyText.d.ts +1 -1
  425. package/lib/esm/core-react/text/BodyText.d.ts.map +1 -1
  426. package/lib/esm/core-react/text/BodyText.js +2 -1
  427. package/lib/esm/core-react/text/BodyText.js.map +1 -1
  428. package/lib/esm/core-react/text/DisabledText.d.ts +1 -0
  429. package/lib/esm/core-react/text/DisabledText.d.ts.map +1 -1
  430. package/lib/esm/core-react/text/DisabledText.js +2 -1
  431. package/lib/esm/core-react/text/DisabledText.js.map +1 -1
  432. package/lib/esm/core-react/text/MutedText.d.ts.map +1 -1
  433. package/lib/esm/core-react/text/MutedText.js +1 -0
  434. package/lib/esm/core-react/text/MutedText.js.map +1 -1
  435. package/lib/esm/core-react/text/StyledText.d.ts +1 -0
  436. package/lib/esm/core-react/text/StyledText.d.ts.map +1 -1
  437. package/lib/esm/core-react/text/StyledText.js.map +1 -1
  438. package/lib/esm/core-react/text/TextProps.d.ts +1 -0
  439. package/lib/esm/core-react/text/TextProps.d.ts.map +1 -1
  440. package/lib/esm/core-react/text/TextProps.js.map +1 -1
  441. package/lib/esm/core-react/tree/ExpansionToggle.d.ts +1 -3
  442. package/lib/esm/core-react/tree/ExpansionToggle.d.ts.map +1 -1
  443. package/lib/esm/core-react/tree/ExpansionToggle.js +9 -10
  444. package/lib/esm/core-react/tree/ExpansionToggle.js.map +1 -1
  445. package/lib/esm/core-react/tree/Node.js +1 -2
  446. package/lib/esm/core-react/tree/Node.js.map +1 -1
  447. package/lib/esm/core-react/utils/IconWebComponent.d.ts +4 -2
  448. package/lib/esm/core-react/utils/IconWebComponent.d.ts.map +1 -1
  449. package/lib/esm/core-react/utils/IconWebComponent.js +8 -5
  450. package/lib/esm/core-react/utils/IconWebComponent.js.map +1 -1
  451. package/lib/esm/core-react/utils/getCssVariable.js +1 -1
  452. package/lib/esm/core-react/utils/getCssVariable.js.map +1 -1
  453. package/lib/esm/core-react/utils/getObjectClassName.js +2 -3
  454. package/lib/esm/core-react/utils/getObjectClassName.js.map +1 -1
  455. package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.d.ts +4 -1
  456. package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.d.ts.map +1 -1
  457. package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js +3 -1
  458. package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
  459. package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.d.ts +1 -1
  460. package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js +2 -3
  461. package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
  462. package/lib/esm/core-react/utils/hooks/useResizeObserver.d.ts.map +1 -1
  463. package/lib/esm/core-react/utils/hooks/useResizeObserver.js +13 -17
  464. package/lib/esm/core-react/utils/hooks/useResizeObserver.js.map +1 -1
  465. package/lib/esm/core-react.d.ts +3 -3
  466. package/lib/esm/core-react.d.ts.map +1 -1
  467. package/lib/esm/core-react.js +5 -4
  468. package/lib/esm/core-react.js.map +1 -1
  469. package/package.json +8 -33
  470. package/lib/cjs/core-react/badge/BadgeUtilities.d.ts.map +0 -1
  471. package/lib/cjs/core-react/badge/BadgeUtilities.js +0 -43
  472. package/lib/cjs/core-react/badge/BadgeUtilities.js.map +0 -1
  473. package/lib/cjs/core-react/badge/BetaBadge.d.ts +0 -10
  474. package/lib/cjs/core-react/badge/BetaBadge.d.ts.map +0 -1
  475. package/lib/cjs/core-react/badge/BetaBadge.js +0 -23
  476. package/lib/cjs/core-react/badge/BetaBadge.js.map +0 -1
  477. package/lib/cjs/core-react/badge/new-feature-badge.svg +0 -1
  478. package/lib/cjs/core-react/badge/technical-preview-badge.svg +0 -1
  479. package/lib/cjs/core-react/useTranslation.d.ts +0 -10
  480. package/lib/cjs/core-react/useTranslation.d.ts.map +0 -1
  481. package/lib/cjs/core-react/useTranslation.js.map +0 -1
  482. package/lib/esm/core-react/badge/BadgeUtilities.d.ts.map +0 -1
  483. package/lib/esm/core-react/badge/BadgeUtilities.js +0 -39
  484. package/lib/esm/core-react/badge/BadgeUtilities.js.map +0 -1
  485. package/lib/esm/core-react/badge/BetaBadge.d.ts +0 -10
  486. package/lib/esm/core-react/badge/BetaBadge.d.ts.map +0 -1
  487. package/lib/esm/core-react/badge/BetaBadge.js +0 -19
  488. package/lib/esm/core-react/badge/BetaBadge.js.map +0 -1
  489. package/lib/esm/core-react/badge/new-feature-badge.svg +0 -1
  490. package/lib/esm/core-react/badge/technical-preview-badge.svg +0 -1
  491. package/lib/esm/core-react/useTranslation.d.ts +0 -10
  492. package/lib/esm/core-react/useTranslation.d.ts.map +0 -1
  493. package/lib/esm/core-react/useTranslation.js +0 -16
  494. package/lib/esm/core-react/useTranslation.js.map +0 -1
@@ -7,6 +7,7 @@ import type { CommonDivProps } from "../utils/Props";
7
7
  * Scrolls content vertically and
8
8
  * has the 'overflow-y: auto' CSS property and has a height and width of 100%.
9
9
  * @public
10
+ * @deprecated in 4.12.x. Use {@link https://developer.mozilla.org/en-US/docs/Web/CSS/overflow overflow property} instead.
10
11
  */
11
12
  export declare function ScrollView(props: CommonDivProps): React.JSX.Element;
12
13
  //# sourceMappingURL=ScrollView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../../src/core-react/base/ScrollView.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,qBAE/C"}
1
+ {"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../../src/core-react/base/ScrollView.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,qBAG/C"}
@@ -11,8 +11,10 @@ import { Div } from "./Div";
11
11
  * Scrolls content vertically and
12
12
  * has the 'overflow-y: auto' CSS property and has a height and width of 100%.
13
13
  * @public
14
+ * @deprecated in 4.12.x. Use {@link https://developer.mozilla.org/en-US/docs/Web/CSS/overflow overflow property} instead.
14
15
  */
15
16
  export function ScrollView(props) {
17
+ // eslint-disable-next-line deprecation/deprecation
16
18
  return React.createElement(Div, { ...props, mainClassName: "uicore-scrollview" });
17
19
  }
18
20
  //# sourceMappingURL=ScrollView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollView.js","sourceRoot":"","sources":["../../../../src/core-react/base/ScrollView.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAqB;IAC9C,OAAO,oBAAC,GAAG,OAAK,KAAK,EAAE,aAAa,EAAC,mBAAmB,GAAG,CAAC;AAC9D,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Base\n */\n\nimport * as React from \"react\";\nimport type { CommonDivProps } from \"../utils/Props\";\nimport { Div } from \"./Div\";\n\n/** Scroll View React functional component.\n * Scrolls content vertically and\n * has the 'overflow-y: auto' CSS property and has a height and width of 100%.\n * @public\n */\nexport function ScrollView(props: CommonDivProps) {\n return <Div {...props} mainClassName=\"uicore-scrollview\" />;\n}\n"]}
1
+ {"version":3,"file":"ScrollView.js","sourceRoot":"","sources":["../../../../src/core-react/base/ScrollView.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAqB;IAC9C,mDAAmD;IACnD,OAAO,oBAAC,GAAG,OAAK,KAAK,EAAE,aAAa,EAAC,mBAAmB,GAAG,CAAC;AAC9D,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Base\n */\n\nimport * as React from \"react\";\nimport type { CommonDivProps } from \"../utils/Props\";\nimport { Div } from \"./Div\";\n\n/** Scroll View React functional component.\n * Scrolls content vertically and\n * has the 'overflow-y: auto' CSS property and has a height and width of 100%.\n * @public\n * @deprecated in 4.12.x. Use {@link https://developer.mozilla.org/en-US/docs/Web/CSS/overflow overflow property} instead.\n */\nexport function ScrollView(props: CommonDivProps) {\n // eslint-disable-next-line deprecation/deprecation\n return <Div {...props} mainClassName=\"uicore-scrollview\" />;\n}\n"]}
@@ -5,6 +5,7 @@ import "./UnderlinedButton.scss";
5
5
  import * as React from "react";
6
6
  /** Properties for the [[UnderlinedButton]] React component
7
7
  * @public
8
+ * @deprecated in 4.12.x. Props of deprecated component {@link UnderlinedButton}.
8
9
  */
9
10
  export interface UnderlinedButtonProps {
10
11
  /** String that will be rendered by the button */
@@ -20,6 +21,7 @@ export interface UnderlinedButtonProps {
20
21
  }
21
22
  /** A React component that makes text clickable and underlined
22
23
  * @public
24
+ * @deprecated in 4.13.x. Use {@link https://itwinui.bentley.com/docs/anchor iTwinUI anchor} or {@link https://itwinui.bentley.com/docs/button button} instead.
23
25
  */
24
26
  export declare function UnderlinedButton(props: UnderlinedButtonProps): React.JSX.Element;
25
27
  //# sourceMappingURL=UnderlinedButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UnderlinedButton.d.ts","sourceRoot":"","sources":["../../../../src/core-react/button/UnderlinedButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,yBAAyB,CAAC;AAEjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAwC5D"}
1
+ {"version":3,"file":"UnderlinedButton.d.ts","sourceRoot":"","sources":["../../../../src/core-react/button/UnderlinedButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,yBAAyB,CAAC;AAEjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;;GAGG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAwC5D"}
@@ -11,7 +11,9 @@ import * as React from "react";
11
11
  import { Key } from "ts-key-enum";
12
12
  /** A React component that makes text clickable and underlined
13
13
  * @public
14
+ * @deprecated in 4.13.x. Use {@link https://itwinui.bentley.com/docs/anchor iTwinUI anchor} or {@link https://itwinui.bentley.com/docs/button button} instead.
14
15
  */
16
+ // eslint-disable-next-line deprecation/deprecation
15
17
  export function UnderlinedButton(props) {
16
18
  const handleKeyUp = React.useCallback((event) => {
17
19
  const key = event.key;
@@ -1 +1 @@
1
- {"version":3,"file":"UnderlinedButton.js","sourceRoot":"","sources":["../../../../src/core-react/button/UnderlinedButton.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,yBAAyB,CAAC;AACjC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAkBlC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,KAA0B,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAEtB,QAAQ,GAAG,EAAE;YACX,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,GAAG;gBACN,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM;SACT;IACH,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,CAAmB,EAAE,EAAE;QACtB,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,SAAS,GAAG,UAAU,CAC1B,wBAAwB,EACxB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAC9C,CAAC;IAEF,OAAO,CACL,8BACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,MAAM,IAEV,KAAK,CAAC,QAAQ,CACV,CACR,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Button\n */\n\nimport \"./UnderlinedButton.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\n\n/** Properties for the [[UnderlinedButton]] React component\n * @public\n */\nexport interface UnderlinedButtonProps {\n /** String that will be rendered by the button */\n children: string | React.ReactNode;\n /** Additional className */\n className?: string;\n /** Title of the button */\n title?: string;\n /** Callback to onClick event */\n onClick?: (e: React.MouseEvent) => void;\n /** Callback to activate */\n onActivate?: () => void;\n}\n\n/** A React component that makes text clickable and underlined\n * @public\n */\nexport function UnderlinedButton(props: UnderlinedButtonProps) {\n const handleKeyUp = React.useCallback(\n (event: React.KeyboardEvent) => {\n const key = event.key;\n\n switch (key) {\n case Key.Enter.valueOf():\n case \" \":\n props.onActivate && props.onActivate();\n break;\n }\n },\n [props]\n );\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent) => {\n props.onClick && props.onClick(e);\n props.onActivate && props.onActivate();\n },\n [props]\n );\n\n const className = classnames(\n \"core-underlined-button\",\n props.className ? props.className : undefined\n );\n\n return (\n <span\n className={className}\n title={props.title}\n onClick={handleClick}\n onKeyUp={handleKeyUp}\n tabIndex={0}\n role=\"link\"\n >\n {props.children}\n </span>\n );\n}\n"]}
1
+ {"version":3,"file":"UnderlinedButton.js","sourceRoot":"","sources":["../../../../src/core-react/button/UnderlinedButton.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,yBAAyB,CAAC;AACjC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAmBlC;;;GAGG;AACH,mDAAmD;AACnD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,KAA0B,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAEtB,QAAQ,GAAG,EAAE;YACX,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,GAAG;gBACN,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM;SACT;IACH,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,CAAmB,EAAE,EAAE;QACtB,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,SAAS,GAAG,UAAU,CAC1B,wBAAwB,EACxB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAC9C,CAAC;IAEF,OAAO,CACL,8BACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,MAAM,IAEV,KAAK,CAAC,QAAQ,CACV,CACR,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Button\n */\n\nimport \"./UnderlinedButton.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\n\n/** Properties for the [[UnderlinedButton]] React component\n * @public\n * @deprecated in 4.12.x. Props of deprecated component {@link UnderlinedButton}.\n */\nexport interface UnderlinedButtonProps {\n /** String that will be rendered by the button */\n children: string | React.ReactNode;\n /** Additional className */\n className?: string;\n /** Title of the button */\n title?: string;\n /** Callback to onClick event */\n onClick?: (e: React.MouseEvent) => void;\n /** Callback to activate */\n onActivate?: () => void;\n}\n\n/** A React component that makes text clickable and underlined\n * @public\n * @deprecated in 4.13.x. Use {@link https://itwinui.bentley.com/docs/anchor iTwinUI anchor} or {@link https://itwinui.bentley.com/docs/button button} instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function UnderlinedButton(props: UnderlinedButtonProps) {\n const handleKeyUp = React.useCallback(\n (event: React.KeyboardEvent) => {\n const key = event.key;\n\n switch (key) {\n case Key.Enter.valueOf():\n case \" \":\n props.onActivate && props.onActivate();\n break;\n }\n },\n [props]\n );\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent) => {\n props.onClick && props.onClick(e);\n props.onActivate && props.onActivate();\n },\n [props]\n );\n\n const className = classnames(\n \"core-underlined-button\",\n props.className ? props.className : undefined\n );\n\n return (\n <span\n className={className}\n title={props.title}\n onClick={handleClick}\n onKeyUp={handleKeyUp}\n tabIndex={0}\n role=\"link\"\n >\n {props.children}\n </span>\n );\n}\n"]}
@@ -6,6 +6,7 @@ import * as React from "react";
6
6
  import type { CommonProps } from "../utils/Props";
7
7
  /** Properties for the [[CheckListBoxItem]] component
8
8
  * @public
9
+ * @deprecated in 4.12.x. Props of deprecated component {@link CheckListBoxItem}.
9
10
  */
10
11
  export interface CheckListBoxItemProps extends CommonProps {
11
12
  /** Label */
@@ -21,16 +22,19 @@ export interface CheckListBoxItemProps extends CommonProps {
21
22
  }
22
23
  /** Item with a checkbox added to a [[CheckListBox]].
23
24
  * @public
25
+ * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.
24
26
  */
25
27
  export declare class CheckListBoxItem extends React.PureComponent<CheckListBoxItemProps> {
26
28
  render(): React.JSX.Element;
27
29
  }
28
30
  /** Separator added to a [[CheckListBox]].
29
31
  * @public
32
+ * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.
30
33
  */
31
34
  export declare function CheckListBoxSeparator(): React.JSX.Element;
32
35
  /** React component showing a list of Checkbox items.
33
36
  * @public
37
+ * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.
34
38
  */
35
39
  export declare class CheckListBox extends React.PureComponent<CommonProps & {
36
40
  /** Content */
@@ -1 +1 @@
1
- {"version":3,"file":"CheckListBox.d.ts","sourceRoot":"","sources":["../../../../src/core-react/checklistbox/CheckListBox.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC;CAC5D;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC;IAC9D,MAAM;CAsBvB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,sBAEpC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK,CAAC,aAAa,CACnD,WAAW,GAAG;IACZ,cAAc;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CACF;IACiB,MAAM;CAQvB"}
1
+ {"version":3,"file":"CheckListBox.d.ts","sourceRoot":"","sources":["../../../../src/core-react/checklistbox/CheckListBox.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC;CAC5D;AAED;;;GAGG;AAEH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC;IAC9D,MAAM;CAsBvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,sBAEpC;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK,CAAC,aAAa,CACnD,WAAW,GAAG;IACZ,cAAc;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CACF;IACiB,MAAM;CAQvB"}
@@ -11,7 +11,9 @@ import * as React from "react";
11
11
  import { Checkbox } from "@itwin/itwinui-react";
12
12
  /** Item with a checkbox added to a [[CheckListBox]].
13
13
  * @public
14
+ * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.
14
15
  */
16
+ // eslint-disable-next-line deprecation/deprecation
15
17
  export class CheckListBoxItem extends React.PureComponent {
16
18
  render() {
17
19
  const className = classnames("core-chk-listboxitem-checkbox", this.props.className);
@@ -24,12 +26,14 @@ export class CheckListBoxItem extends React.PureComponent {
24
26
  }
25
27
  /** Separator added to a [[CheckListBox]].
26
28
  * @public
29
+ * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.
27
30
  */
28
31
  export function CheckListBoxSeparator() {
29
32
  return React.createElement("div", { className: "core-chk-listbox-separator" });
30
33
  }
31
34
  /** React component showing a list of Checkbox items.
32
35
  * @public
36
+ * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.
33
37
  */
34
38
  export class CheckListBox extends React.PureComponent {
35
39
  render() {
@@ -1 +1 @@
1
- {"version":3,"file":"CheckListBox.js","sourceRoot":"","sources":["../../../../src/core-react/checklistbox/CheckListBox.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAmBhD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK,CAAC,aAAoC;IAC9D,MAAM;QACpB,MAAM,SAAS,GAAG,UAAU,CAC1B,+BAA+B,EAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,CAAC;QACF,OAAO,CACL;YACE,oBAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,iBACjB,+BAA+B,EAC3C,YAAY,EAAE;oBACZ,SAAS;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;iBACxB,GACD,CACC,CACN,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,6BAAK,SAAS,EAAC,4BAA4B,GAAG,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,aAKvC;IACiB,MAAM;QACpB,MAAM,SAAS,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,CACL,4BAAI,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,CACN,CAAC;IACJ,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CheckListBox\n */\n\nimport \"./CheckListBox.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Checkbox } from \"@itwin/itwinui-react\";\nimport type { CommonProps } from \"../utils/Props\";\n\n/** Properties for the [[CheckListBoxItem]] component\n * @public\n */\nexport interface CheckListBoxItemProps extends CommonProps {\n /** Label */\n label: string;\n /** Indicates whether the item is checked or not */\n checked?: boolean;\n /** Indicates whether the item is disabled or not */\n disabled?: boolean;\n /** Function called when item is clicked. */\n onClick?: () => any;\n /** Function called when item is changed. */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => any;\n}\n\n/** Item with a checkbox added to a [[CheckListBox]].\n * @public\n */\nexport class CheckListBoxItem extends React.PureComponent<CheckListBoxItemProps> {\n public override render() {\n const className = classnames(\n \"core-chk-listboxitem-checkbox\",\n this.props.className\n );\n return (\n <li>\n <Checkbox\n checked={this.props.checked}\n disabled={this.props.disabled}\n label={this.props.label}\n onClick={this.props.onClick}\n onChange={this.props.onChange}\n data-testid=\"core-chk-listboxitem-checkbox\"\n wrapperProps={{\n className,\n style: this.props.style,\n }}\n />\n </li>\n );\n }\n}\n\n/** Separator added to a [[CheckListBox]].\n * @public\n */\nexport function CheckListBoxSeparator() {\n return <div className=\"core-chk-listbox-separator\" />;\n}\n\n/** React component showing a list of Checkbox items.\n * @public\n */\nexport class CheckListBox extends React.PureComponent<\n CommonProps & {\n /** Content */\n children?: React.ReactNode;\n }\n> {\n public override render() {\n const className = classnames(\"core-chk-listbox\", this.props.className);\n return (\n <ul className={className} style={this.props.style}>\n {this.props.children}\n </ul>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"CheckListBox.js","sourceRoot":"","sources":["../../../../src/core-react/checklistbox/CheckListBox.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAoBhD;;;GAGG;AACH,mDAAmD;AACnD,MAAM,OAAO,gBAAiB,SAAQ,KAAK,CAAC,aAAoC;IAC9D,MAAM;QACpB,MAAM,SAAS,GAAG,UAAU,CAC1B,+BAA+B,EAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,CAAC;QACF,OAAO,CACL;YACE,oBAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,iBACjB,+BAA+B,EAC3C,YAAY,EAAE;oBACZ,SAAS;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;iBACxB,GACD,CACC,CACN,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,6BAAK,SAAS,EAAC,4BAA4B,GAAG,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,aAKvC;IACiB,MAAM;QACpB,MAAM,SAAS,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,CACL,4BAAI,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,CACN,CAAC;IACJ,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CheckListBox\n */\n\nimport \"./CheckListBox.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Checkbox } from \"@itwin/itwinui-react\";\nimport type { CommonProps } from \"../utils/Props\";\n\n/** Properties for the [[CheckListBoxItem]] component\n * @public\n * @deprecated in 4.12.x. Props of deprecated component {@link CheckListBoxItem}.\n */\nexport interface CheckListBoxItemProps extends CommonProps {\n /** Label */\n label: string;\n /** Indicates whether the item is checked or not */\n checked?: boolean;\n /** Indicates whether the item is disabled or not */\n disabled?: boolean;\n /** Function called when item is clicked. */\n onClick?: () => any;\n /** Function called when item is changed. */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => any;\n}\n\n/** Item with a checkbox added to a [[CheckListBox]].\n * @public\n * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class CheckListBoxItem extends React.PureComponent<CheckListBoxItemProps> {\n public override render() {\n const className = classnames(\n \"core-chk-listboxitem-checkbox\",\n this.props.className\n );\n return (\n <li>\n <Checkbox\n checked={this.props.checked}\n disabled={this.props.disabled}\n label={this.props.label}\n onClick={this.props.onClick}\n onChange={this.props.onChange}\n data-testid=\"core-chk-listboxitem-checkbox\"\n wrapperProps={{\n className,\n style: this.props.style,\n }}\n />\n </li>\n );\n }\n}\n\n/** Separator added to a [[CheckListBox]].\n * @public\n * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.\n */\nexport function CheckListBoxSeparator() {\n return <div className=\"core-chk-listbox-separator\" />;\n}\n\n/** React component showing a list of Checkbox items.\n * @public\n * @deprecated in 4.12.x. Use {@link https://itwinui.bentley.com/docs/list iTwinUI list} instead.\n */\nexport class CheckListBox extends React.PureComponent<\n CommonProps & {\n /** Content */\n children?: React.ReactNode;\n }\n> {\n public override render() {\n const className = classnames(\"core-chk-listbox\", this.props.className);\n return (\n <ul className={className} style={this.props.style}>\n {this.props.children}\n </ul>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenu.tsx"],"names":[],"mappings":"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"}
@@ -221,13 +221,12 @@ class ContextMenu extends React.PureComponent {
221
221
  React.createElement("div", { ref: this._menuRef, role: "menu", tabIndex: 0, "data-testid": "core-context-menu-container", className: classnames("core-context-menu-container", opened && "core-context-menu-opened", floating && "core-context-menu-floating", ContextMenu.getCSSClassNameFromDirection(renderDirection)) }, this._injectedChildren))));
222
222
  }
223
223
  getWindow() {
224
- var _a;
225
224
  const el = this._rootElement
226
225
  ? this._rootElement
227
226
  : /* istanbul ignore next */ this._menuElement;
228
227
  const parentDocument = el.ownerDocument;
229
228
  // istanbul ignore next
230
- return (_a = parentDocument.defaultView) !== null && _a !== void 0 ? _a : window;
229
+ return parentDocument.defaultView ?? window;
231
230
  }
232
231
  /** @internal */
233
232
  componentDidMount() {
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenu.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,oBAAoB,CAAC;AAC5B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2ClD;;;;GAIG;AACH,MAAa,WAAY,SAAQ,KAAK,CAAC,aAGtC;IA0BC,YAAY,KAAuB;QACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QA1BP,iBAAY,GAAuB,IAAI,CAAC;QACxC,iBAAY,GAAuB,IAAI,CAAC;QACxC,qBAAgB,GAA4C,IAAI,CAAC;QACjE,YAAO,GAAW,CAAC,CAAC;QACpB,eAAU,GAAwB,IAAI,GAAG,EAAE,CAAC;QAG5C,mBAAc,GACpB,oBAAoB,CAAC,WAAW,CAAC;QAC3B,uBAAkB,GAAW,CAAC,CAAC;QAE/B,wBAAmB,GAAW,CAAC,CAAC;QAChC,uBAAkB,GAAW,CAAC,CAAC;QAoF/B,wBAAmB,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE;YAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,uBAAuB;QACf,0BAAqB,GAAG,CAAC,KAAiB,EAAQ,EAAE;YAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;gBAChD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAmHM,yBAAoB,GAAG,CAC7B,QAAyB,EACzB,SAA2C,EAC3C,aAAqB,EACrB,EAAE;YACF,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,2CAA2C;YAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAsB,EAAE,EAAE;gBACjE,qDAAqD;gBACrD,IACE,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,IAAI,KAAK;oBAChB,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;oBACjE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACvD,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EACrD;oBACA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,iFAAiF;oBACnG,MAAM,OAAO,GAAG,GAAG,EAAE;wBACnB,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;wBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,CAAC,CAAC;oBACF,MAAM,GAAG,GAAG,CAAC,EAA2C,EAAE,EAAE;wBAC1D,IAAI,aAAa,KAAK,EAAE;4BACtB,yEAAyE;4BACzE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;oBAC/B,CAAC,CAAC;oBACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,yCAAyC;oBACjH,MAAM,UAAU,GAEZ;wBACF,UAAU,EAAE,IAAI;wBAChB,GAAG;wBACH,OAAO;wBACP,UAAU,EAAE,aAAa,KAAK,EAAE;wBAChC,cAAc,EAAE,sBAAsB;qBACvC,CAAC;oBACF,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;wBACjC,kCAAkC;wBAClC,UAAU,CAAC,SAAS;4BAClB,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,0BAA0B,CAAC,SAAS,CAAC;qBACjE;oBACD,KAAK,EAAE,CAAC;oBACR,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBAC9C;;oBAAM,OAAO,KAAK,CAAC,CAAC,gCAAgC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,EAAyB,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,EAAyB,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,CAAC,CAAC;QA2DK,UAAK,GAAG,GAAG,EAAE;YAClB,uBAAuB;YACvB,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACnD,CAAC,CAAC;QAEK,SAAI,GAAG,GAAG,EAAE;YACjB,uBAAuB;YACvB,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC;QAEK,YAAO,GAAG,GAAY,EAAE;YAC7B,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvE,uBAAuB;YACvB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;aACxD;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,KAAU,EAAQ,EAAE;YAChD,uBAAuB;YACvB,IACE,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,KAAK,CAAC,MAAM;gBACjB,KAAK,CAAC,MAAM,YAAY,IAAI;gBAC5B,IAAI,CAAC,KAAK,CAAC,cAAc;gBACzB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAEzC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAAuC,EAAQ,EAAE;YACvE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAA0C,EAAQ,EAAE;YAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1C,OAAO;aACR;YAED,uBAAuB;YACvB,IAAI,KAAK,CAAC,GAAG,EAAE;gBACb,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAa,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;wBAC/D,iCAAiC;wBACjC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;4BACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;4BACtC,OAAO;yBACR;qBACF;iBACF;gBACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;wBACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE;4BACzC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;6BAChC;wBACH,CAAC,CAAC,CAAC;wBACH,KAAK,CAAC,eAAe,EAAE,CAAC;wBACxB,OAAO;qBACR;iBACF;aACF;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;gBACzC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBACrD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;iBAC/B;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACtC,uBAAuB;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IACE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,gBAAgB,EACrB;gBACA,KAAK,CAAC,eAAe,EAAE,CAAC;gBAExB,uBAAuB;gBACvB,IACE,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBACjC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB;wBAC9C,cAAc,EAChB;oBACA,uBAAuB;oBACvB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM;wBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;iBAClE;aACF;YAED,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IACE,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;gBACnC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EACrC;gBACA,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;oBACxB,aAAa,GAAG,CAAC,CAAC;iBACnB;qBAAM;oBACL,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;wBACvC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC;4BAAE,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;;4BAChE,aAAa,EAAE,CAAC;qBACtB;oBACD,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;wBACzC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;4BAAE,aAAa,GAAG,CAAC,CAAC;;4BAChE,aAAa,EAAE,CAAC;qBACtB;iBACF;aACF;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QAzaA,IAAI,CAAC,KAAK,GAAG;YACX,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAc;YACxC,SAAS,EAAE,KAAK,CAAC,SAAU;YAC3B,eAAe,EAAE,KAAK,CAAC,eAAgB;SACxC,CAAC;IACJ,CAAC;IA0Ee,MAAM;QACpB,MAAM,EACJ,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,QAAQ,EACR,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,MAAM,eAAe,GACnB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,IACE,IAAI,CAAC,aAAa,KAAK,QAAQ;YAC/B,IAAI,CAAC,cAAc,KAAK,eAAe;YACvC,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EACpD;YACA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAChD,QAAQ,EACR,eAAe,EACf,IAAI,CAAC,KAAK,CAAC,aAAa,CACzB,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SACpD;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAE9D,OAAO,CACL,6BACE,IAAI,EAAC,cAAc,EACnB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,OAAO,EAAE,IAAI,CAAC,YAAY,iBACd,wBAAwB,KAChC,KAAK,EACT,GAAG,EAAE,IAAI,CAAC,QAAQ;YAElB,oBAAC,mBAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,qBAAqB;gBAC7D,6BACE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,CAAC,iBACC,6BAA6B,EACzC,SAAS,EAAE,UAAU,CACnB,6BAA6B,EAC7B,MAAM,IAAI,0BAA0B,EACpC,QAAQ,IAAI,4BAA4B,EACxC,WAAW,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAC1D,IAEA,IAAI,CAAC,iBAAiB,CACnB,CACc,CAClB,CACP,CAAC;IACJ,CAAC;IAwGO,SAAS;;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY;YAC1B,CAAC,CAAC,IAAI,CAAC,YAAY;YACnB,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC;QACjD,MAAM,cAAc,GAAG,EAAG,CAAC,aAAa,CAAC;QACzC,uBAAuB;QACvB,OAAO,MAAA,cAAc,CAAC,WAAW,mCAAI,MAAM,CAAC;IAC9C,CAAC;IAED,gBAAgB;IACA,iBAAiB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChE,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAElE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnE,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,IAAI,eAAe,GACjB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,IACE,YAAY,CAAC,WAAW,KAAK,IAAI,CAAC,mBAAmB;YACrD,YAAY,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB;YAEnD,OAAO;QACT,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC;QAElD,4BAA4B;QAC5B,IAAI,YAAY,IAAI,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,eAAe,GAAG,WAAW,CAAC,QAAQ,CACpC,eAAgB,EAChB,QAAQ,EACR,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,WAAW,CACzB,CAAC;YACF,uBAAuB;YACvB,IAAI,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;IA0He,kBAAkB,CAAC,SAA2B;QAC5D,IAAI,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACxD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAc,EAAE,CAAC,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAc,EAAE,CAAC,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC1B,2CAA2C;YAC3C,2HAA2H;YAC3H,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;;AApca,wBAAY,GAA8B;IACtD,SAAS,EAAE,oBAAoB,CAAC,WAAW;IAC3C,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,IAAI;CACf,AAPyB,CAOxB;AAaF,gBAAgB;AACF,oBAAQ,GAAG,CACvB,GAAyB,EACzB,IAAqB,EACrB,WAAmB,EACnB,YAAoB,EACE,EAAE;IACxB,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;QAC5B,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,QAAQ;gBAChC,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACR,KAAK,oBAAoB,CAAC,KAAK;gBAC7B,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC;gBAChC,MAAM;YACR,KAAK,oBAAoB,CAAC,WAAW;gBACnC,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC;gBACtC,MAAM;SACT;KACF;IACD,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;QACjB,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,OAAO;gBAC/B,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC;gBACpC,MAAM;YACR,KAAK,oBAAoB,CAAC,IAAI;gBAC5B,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC;gBACjC,MAAM;YACR,KAAK,oBAAoB,CAAC,UAAU;gBAClC,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC;gBACvC,MAAM;SACT;KACF;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE;QAC9B,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,UAAU;gBAClC,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACR,KAAK,oBAAoB,CAAC,MAAM;gBAC9B,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC;gBAC/B,MAAM;YACR,KAAK,oBAAoB,CAAC,WAAW;gBACnC,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC;gBACpC,MAAM;SACT;KACF;IACD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;QAChB,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,OAAO;gBAC/B,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC;gBACtC,MAAM;YACR,KAAK,oBAAoB,CAAC,GAAG;gBAC3B,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACR,KAAK,oBAAoB,CAAC,QAAQ;gBAChC,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC;gBACvC,MAAM;SACT;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC,AA3DqB,CA2DpB;AAiFF,gBAAgB;AACF,wCAA4B,GAAG,CAC3C,SAAgC,EACxB,EAAE;IACV,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,uBAAuB;IACvB,IAAI,SAAS,KAAK,SAAS;QAAE,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC;IAE1E,IAAI,SAAS,KAAK,oBAAoB,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAEvD,QAAQ,SAAS,EAAE;QACjB,KAAK,oBAAoB,CAAC,OAAO;YAC/B,SAAS,GAAG,8CAA8C,CAAC;YAC3D,MAAM;QACR,KAAK,oBAAoB,CAAC,GAAG;YAC3B,SAAS,GAAG,uBAAuB,CAAC;YACpC,MAAM;QACR,KAAK,oBAAoB,CAAC,QAAQ;YAChC,SAAS,GAAG,+CAA+C,CAAC;YAC5D,MAAM;QACR,KAAK,oBAAoB,CAAC,IAAI;YAC5B,SAAS,GAAG,wBAAwB,CAAC;YACrC,MAAM;QACR,KAAK,oBAAoB,CAAC,MAAM;YAC9B,SAAS,GAAG,0BAA0B,CAAC;YACvC,MAAM;QACR,KAAK,oBAAoB,CAAC,KAAK;YAC7B,SAAS,GAAG,yBAAyB,CAAC;YACtC,MAAM;QACR,KAAK,oBAAoB,CAAC,UAAU;YAClC,SAAS,GAAG,iDAAiD,CAAC;YAC9D,MAAM;QACR,KAAK,oBAAoB,CAAC,MAAM;YAC9B,SAAS,GAAG,0BAA0B,CAAC;YACvC,MAAM;QACR,KAAK,oBAAoB,CAAC,WAAW;YACnC,SAAS,GAAG,kDAAkD,CAAC;YAC/D,MAAM;KACT;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,AAzCyC,CAyCxC;SA7NS,WAAW","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContextMenu\n */\n\nimport \"./ContextMenu.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { DivWithOutsideClick } from \"../base/DivWithOutsideClick\";\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\nimport type { ContextMenuItemProps } from \"./ContextMenuItem\";\nimport { ContextMenuItem } from \"./ContextMenuItem\";\nimport type { ContextSubMenuProps } from \"./ContextSubMenu\";\nimport { ContextSubMenu } from \"./ContextSubMenu\";\n\n/** Properties for the [[ContextMenu]] component\n * @public\n */\nexport interface ContextMenuProps extends CommonProps {\n /** Whether ContextMenu is currently opened. */\n opened: boolean;\n /** Which direction the menu opens. Default: ContextMenuDirection.BottomRight */\n direction?: ContextMenuDirection;\n /** When click is registered outside of ContextMenu. */\n onOutsideClick?: (event: MouseEvent) => any;\n /** When list item or submenu is selected */\n onSelect?: (event: any) => any;\n /** when Escape button is pressed */\n onEsc?: (data: any) => any;\n /** Whether menu flips directions based on screen edge. Default: true */\n autoflip?: boolean;\n /** Whether menu hugs screen edge when autoflip is off. Default: true */\n edgeLimit?: boolean;\n /** Whether Hotkey press selects item, or just highlights item. Default: true */\n hotkeySelect?: boolean;\n /** starting menu item selected index Default: -1 */\n selectedIndex?: number;\n /** whether menu floats on the viewport, or the page. When false, container elements can clip menu with overflow: hidden; Default: true */\n floating?: boolean;\n /** @internal */\n parentMenu?: ContextMenu;\n /** @internal */\n parentSubmenu?: ContextSubMenu;\n /** @internal */\n ignoreNextKeyUp?: boolean;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** @internal */\ninterface ContextMenuState {\n selectedIndex: number;\n direction: ContextMenuDirection;\n ignoreNextKeyUp: boolean;\n}\n\n/**\n * A context menu populated with [[ContextMenuItem]] components.\n * Can be nested using [[ContextSubMenu]] component.\n * @public\n */\nexport class ContextMenu extends React.PureComponent<\n ContextMenuProps,\n ContextMenuState\n> {\n private _rootElement: HTMLElement | null = null;\n private _menuElement: HTMLElement | null = null;\n private _selectedElement: ContextMenuItem | ContextSubMenu | null = null;\n private _length: number = 0;\n private _hotKeyMap: Map<number, string> = new Map();\n\n private _lastChildren: React.ReactNode;\n private _lastDirection: ContextMenuDirection | undefined =\n ContextMenuDirection.BottomRight;\n private _lastSelectedIndex: number = 0;\n private _injectedChildren: React.ReactNode;\n private _parentWindowHeight: number = 0;\n private _parentWindowWidth: number = 0;\n\n public static defaultProps: Partial<ContextMenuProps> = {\n direction: ContextMenuDirection.BottomRight,\n autoflip: true,\n edgeLimit: true,\n hotkeySelect: true,\n selectedIndex: -1,\n floating: true,\n };\n\n /** @internal */\n public override readonly state: Readonly<ContextMenuState>;\n constructor(props: ContextMenuProps) {\n super(props);\n this.state = {\n selectedIndex: this.props.selectedIndex!,\n direction: props.direction!,\n ignoreNextKeyUp: props.ignoreNextKeyUp!,\n };\n }\n\n /** @internal */\n public static autoFlip = (\n dir: ContextMenuDirection,\n rect: DOMRectReadOnly,\n windowWidth: number,\n windowHeight: number\n ): ContextMenuDirection => {\n if (rect.right > windowWidth) {\n switch (dir) {\n case ContextMenuDirection.TopRight:\n dir = ContextMenuDirection.TopLeft;\n break;\n case ContextMenuDirection.Right:\n dir = ContextMenuDirection.Left;\n break;\n case ContextMenuDirection.BottomRight:\n dir = ContextMenuDirection.BottomLeft;\n break;\n }\n }\n if (rect.left < 0) {\n switch (dir) {\n case ContextMenuDirection.TopLeft:\n dir = ContextMenuDirection.TopRight;\n break;\n case ContextMenuDirection.Left:\n dir = ContextMenuDirection.Right;\n break;\n case ContextMenuDirection.BottomLeft:\n dir = ContextMenuDirection.BottomRight;\n break;\n }\n }\n if (rect.bottom > windowHeight) {\n switch (dir) {\n case ContextMenuDirection.BottomLeft:\n dir = ContextMenuDirection.TopLeft;\n break;\n case ContextMenuDirection.Bottom:\n dir = ContextMenuDirection.Top;\n break;\n case ContextMenuDirection.BottomRight:\n dir = ContextMenuDirection.TopRight;\n break;\n }\n }\n if (rect.top < 0) {\n switch (dir) {\n case ContextMenuDirection.TopLeft:\n dir = ContextMenuDirection.BottomLeft;\n break;\n case ContextMenuDirection.Top:\n dir = ContextMenuDirection.Bottom;\n break;\n case ContextMenuDirection.TopRight:\n dir = ContextMenuDirection.BottomRight;\n break;\n }\n }\n return dir;\n };\n\n private _handleHotKeyParsed = (index: number, hotKey: string) => {\n this._hotKeyMap.set(index, hotKey);\n };\n\n // istanbul ignore next\n private _handleOnOutsideClick = (event: MouseEvent): void => {\n if (this.props.opened && this.props.onOutsideClick)\n this.props.onOutsideClick(event);\n };\n\n public override render(): React.ReactElement {\n const {\n opened,\n direction,\n onOutsideClick,\n onSelect,\n onEsc,\n autoflip,\n edgeLimit,\n hotkeySelect,\n selectedIndex,\n floating,\n parentMenu,\n parentSubmenu,\n children,\n className,\n ignoreNextKeyUp,\n ...props\n } = this.props;\n const renderDirection =\n parentMenu === undefined ? this.state.direction : direction;\n\n if (\n this._lastChildren !== children ||\n this._lastDirection !== renderDirection ||\n this._lastSelectedIndex !== this.state.selectedIndex\n ) {\n this._injectedChildren = this._injectMenuItemProps(\n children,\n renderDirection,\n this.state.selectedIndex\n );\n this._lastChildren = children;\n this._lastDirection = renderDirection;\n this._lastSelectedIndex = this.state.selectedIndex;\n }\n\n const classNames = classnames(\"core-context-menu\", className);\n\n return (\n <div\n role=\"presentation\"\n className={classNames}\n onKeyUp={this._handleKeyUp}\n onClick={this._handleClick}\n data-testid=\"core-context-menu-root\"\n {...props}\n ref={this._rootRef}\n >\n <DivWithOutsideClick onOutsideClick={this._handleOnOutsideClick}>\n <div\n ref={this._menuRef}\n role=\"menu\"\n tabIndex={0}\n data-testid=\"core-context-menu-container\"\n className={classnames(\n \"core-context-menu-container\",\n opened && \"core-context-menu-opened\",\n floating && \"core-context-menu-floating\",\n ContextMenu.getCSSClassNameFromDirection(renderDirection)\n )}\n >\n {this._injectedChildren}\n </div>\n </DivWithOutsideClick>\n </div>\n );\n }\n\n /** @internal */\n public static getCSSClassNameFromDirection = (\n direction?: ContextMenuDirection\n ): string => {\n let className = \"\";\n\n // istanbul ignore next\n if (direction === undefined) direction = ContextMenuDirection.BottomRight;\n\n if (direction === ContextMenuDirection.None) return \"\";\n\n switch (direction) {\n case ContextMenuDirection.TopLeft:\n className = \"core-context-menu-top core-context-menu-left\";\n break;\n case ContextMenuDirection.Top:\n className = \"core-context-menu-top\";\n break;\n case ContextMenuDirection.TopRight:\n className = \"core-context-menu-top core-context-menu-right\";\n break;\n case ContextMenuDirection.Left:\n className = \"core-context-menu-left\";\n break;\n case ContextMenuDirection.Center:\n className = \"core-context-menu-center\";\n break;\n case ContextMenuDirection.Right:\n className = \"core-context-menu-right\";\n break;\n case ContextMenuDirection.BottomLeft:\n className = \"core-context-menu-bottom core-context-menu-left\";\n break;\n case ContextMenuDirection.Bottom:\n className = \"core-context-menu-bottom\";\n break;\n case ContextMenuDirection.BottomRight:\n className = \"core-context-menu-bottom core-context-menu-right\";\n break;\n }\n\n return className;\n };\n\n private _injectMenuItemProps = (\n children: React.ReactNode,\n direction: ContextMenuDirection | undefined,\n selectedIndex: number\n ) => {\n let index = 0;\n // add inheritance data to submenu children\n const ch = React.Children.map(children, (child: React.ReactNode) => {\n // Capture only ContextSubMenus and ContextMenuItems.\n if (\n child &&\n typeof child === \"object\" &&\n \"props\" in child &&\n (child.type === ContextSubMenu || child.type === ContextMenuItem) &&\n !ConditionalBooleanValue.getValue(child.props.disabled) &&\n !ConditionalBooleanValue.getValue(child.props.hidden)\n ) {\n const id = index; // get separate id variable so value stays the same when onHover is called later.\n const onHover = () => {\n this.setState({ selectedIndex: id });\n this.focus();\n };\n const ref = (el: ContextSubMenu | ContextMenuItem | null) => {\n if (selectedIndex === id)\n // only save to this._selectedElement if previously captured bool is true\n this._selectedElement = el;\n };\n const boundHandleHotKeyParse = this._handleHotKeyParsed.bind(this, id); // bind local callback for specific index\n const childProps: Partial<\n ContextSubMenuProps & ContextMenuItemProps & { ref: typeof ref }\n > = {\n parentMenu: this,\n ref,\n onHover,\n isSelected: selectedIndex === id,\n onHotKeyParsed: boundHandleHotKeyParse,\n };\n if (child.type === ContextSubMenu) {\n // add direction only to sub-menus\n childProps.direction =\n child.props.direction || /* istanbul ignore next */ direction;\n }\n index++;\n return React.cloneElement(child, childProps);\n } else return child; // Else, pass through unmodified\n });\n this._length = index;\n return ch;\n };\n\n private _rootRef = (el: HTMLDivElement | null) => {\n this._rootElement = el;\n };\n\n private _menuRef = (el: HTMLDivElement | null) => {\n this._menuElement = el;\n };\n\n private getWindow() {\n const el = this._rootElement\n ? this._rootElement\n : /* istanbul ignore next */ this._menuElement;\n const parentDocument = el!.ownerDocument;\n // istanbul ignore next\n return parentDocument.defaultView ?? window;\n }\n\n /** @internal */\n public override componentDidMount() {\n const parentWindow = this.getWindow();\n parentWindow.addEventListener(\"focus\", this._handleFocusChange);\n parentWindow.addEventListener(\"mouseup\", this._handleFocusChange);\n\n this.checkRenderDirection();\n\n if (this.props.opened) this.focus();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n const parentWindow = this.getWindow();\n parentWindow.removeEventListener(\"focus\", this._handleFocusChange);\n parentWindow.removeEventListener(\"mouseup\", this._handleFocusChange);\n }\n\n private checkRenderDirection() {\n const { direction, autoflip, parentMenu } = this.props;\n const parentWindow = this.getWindow();\n\n let renderDirection =\n parentMenu === undefined ? this.state.direction : direction;\n\n if (\n parentWindow.innerHeight === this._parentWindowHeight &&\n parentWindow.innerWidth === this._parentWindowWidth\n )\n return;\n this._parentWindowHeight = parentWindow.innerHeight;\n this._parentWindowWidth = parentWindow.innerWidth;\n\n // check if menu should flip\n if (parentWindow && autoflip && parentMenu === undefined) {\n const menuRect = this.getRect();\n renderDirection = ContextMenu.autoFlip(\n renderDirection!,\n menuRect,\n parentWindow.innerWidth,\n parentWindow.innerHeight\n );\n // istanbul ignore next\n if (renderDirection !== this.state.direction)\n this.setState({ direction: renderDirection });\n }\n }\n\n public focus = () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.focus();\n };\n\n public blur = () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.blur();\n };\n\n public getRect = (): DOMRect => {\n let clientRect = DOMRect.fromRect({ x: 0, y: 0, width: 0, height: 0 });\n\n // istanbul ignore else\n if (this._menuElement) {\n clientRect = this._menuElement.getBoundingClientRect();\n }\n return clientRect;\n };\n\n private _handleFocusChange = (event: any): void => {\n // istanbul ignore else\n if (\n this._rootElement &&\n this.props.opened &&\n event.target instanceof Node &&\n this.props.onOutsideClick &&\n !this._rootElement.contains(event.target)\n )\n this.props.onOutsideClick(event);\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (this.props.onSelect) this.props.onSelect(event);\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (this.state.ignoreNextKeyUp) {\n this.setState({ ignoreNextKeyUp: false });\n return;\n }\n\n // istanbul ignore else\n if (event.key) {\n for (const [key, value] of this._hotKeyMap) {\n if (!this.props.hotkeySelect! && key > this.state.selectedIndex) {\n // Start search at current index.\n if (event.key.toUpperCase() === value) {\n this.setState({ selectedIndex: key });\n return;\n }\n }\n }\n for (const [key, value] of this._hotKeyMap) {\n if (event.key.toUpperCase() === value) {\n this.setState({ selectedIndex: key }, () => {\n if (this.props.hotkeySelect && this._selectedElement) {\n this._selectedElement.select();\n }\n });\n event.stopPropagation();\n return;\n }\n }\n }\n\n if (event.key === Key.ArrowLeft.valueOf()) {\n event.stopPropagation();\n if (this.props.parentMenu && this.props.parentSubmenu) {\n this.props.parentSubmenu.close();\n this.props.parentMenu.focus();\n }\n if (this.props.onEsc) this.props.onEsc(event);\n }\n\n if (event.key === Key.Escape.valueOf()) {\n // istanbul ignore else\n if (this.props.onEsc) this.props.onEsc(event);\n }\n\n if (\n (event.key === Key.Enter.valueOf() ||\n event.key === Key.ArrowRight.valueOf()) &&\n this._selectedElement\n ) {\n event.stopPropagation();\n\n // istanbul ignore else\n if (\n event.key === Key.Enter.valueOf() ||\n /* istanbul ignore next */ this._selectedElement instanceof\n ContextSubMenu\n ) {\n // istanbul ignore else\n if (this._selectedElement.select) this._selectedElement.select();\n }\n }\n\n let { selectedIndex } = this.state;\n if (\n event.key === Key.ArrowUp.valueOf() ||\n event.key === Key.ArrowDown.valueOf()\n ) {\n event.stopPropagation();\n if (selectedIndex === -1) {\n selectedIndex = 0;\n } else {\n if (event.key === Key.ArrowUp.valueOf()) {\n if (this.state.selectedIndex === 0) selectedIndex = this._length - 1;\n else selectedIndex--;\n }\n if (event.key === Key.ArrowDown.valueOf()) {\n if (this.state.selectedIndex === this._length - 1) selectedIndex = 0;\n else selectedIndex++;\n }\n }\n }\n this.setState({ selectedIndex });\n };\n\n public override componentDidUpdate(prevProps: ContextMenuProps) {\n if (prevProps.selectedIndex !== this.props.selectedIndex) {\n this.setState((_, props) => ({ selectedIndex: props.selectedIndex! }));\n }\n if (!prevProps.opened && this.props.opened) {\n this.setState((_, props) => ({ selectedIndex: props.selectedIndex! }));\n }\n if (!this.props.parentMenu) {\n // const direction = this.props.direction!;\n // if ((!this.props.opened && prevProps.opened && direction !== this.state.direction) || prevProps.direction !== direction)\n this.checkRenderDirection();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ContextMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenu.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,oBAAoB,CAAC;AAC5B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2ClD;;;;GAIG;AACH,MAAa,WAAY,SAAQ,KAAK,CAAC,aAGtC;IA0BC,YAAY,KAAuB;QACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QA1BP,iBAAY,GAAuB,IAAI,CAAC;QACxC,iBAAY,GAAuB,IAAI,CAAC;QACxC,qBAAgB,GAA4C,IAAI,CAAC;QACjE,YAAO,GAAW,CAAC,CAAC;QACpB,eAAU,GAAwB,IAAI,GAAG,EAAE,CAAC;QAG5C,mBAAc,GACpB,oBAAoB,CAAC,WAAW,CAAC;QAC3B,uBAAkB,GAAW,CAAC,CAAC;QAE/B,wBAAmB,GAAW,CAAC,CAAC;QAChC,uBAAkB,GAAW,CAAC,CAAC;QAoF/B,wBAAmB,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE;YAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,uBAAuB;QACf,0BAAqB,GAAG,CAAC,KAAiB,EAAQ,EAAE;YAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;gBAChD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAoHM,yBAAoB,GAAG,CAC7B,QAAyB,EACzB,SAA2C,EAC3C,aAAqB,EACrB,EAAE;YACF,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,2CAA2C;YAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAsB,EAAE,EAAE;gBACjE,qDAAqD;gBACrD,IACE,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,IAAI,KAAK;oBAChB,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;oBACjE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACvD,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EACrD;oBACA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,iFAAiF;oBACnG,MAAM,OAAO,GAAG,GAAG,EAAE;wBACnB,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;wBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,CAAC,CAAC;oBACF,MAAM,GAAG,GAAG,CAAC,EAA2C,EAAE,EAAE;wBAC1D,IAAI,aAAa,KAAK,EAAE;4BACtB,yEAAyE;4BACzE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;oBAC/B,CAAC,CAAC;oBACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,yCAAyC;oBACjH,MAAM,UAAU,GAEZ;wBACF,UAAU,EAAE,IAAI;wBAChB,GAAG;wBACH,OAAO;wBACP,UAAU,EAAE,aAAa,KAAK,EAAE;wBAChC,cAAc,EAAE,sBAAsB;qBACvC,CAAC;oBACF,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;wBACjC,kCAAkC;wBAClC,UAAU,CAAC,SAAS;4BAClB,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,0BAA0B,CAAC,SAAS,CAAC;qBACjE;oBACD,KAAK,EAAE,CAAC;oBACR,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBAC9C;;oBAAM,OAAO,KAAK,CAAC,CAAC,gCAAgC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,EAAyB,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,EAAyB,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,CAAC,CAAC;QA2DK,UAAK,GAAG,GAAG,EAAE;YAClB,uBAAuB;YACvB,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACnD,CAAC,CAAC;QAEK,SAAI,GAAG,GAAG,EAAE;YACjB,uBAAuB;YACvB,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC;QAEK,YAAO,GAAG,GAAY,EAAE;YAC7B,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvE,uBAAuB;YACvB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;aACxD;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,KAAU,EAAQ,EAAE;YAChD,uBAAuB;YACvB,IACE,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,KAAK,CAAC,MAAM;gBACjB,KAAK,CAAC,MAAM,YAAY,IAAI;gBAC5B,IAAI,CAAC,KAAK,CAAC,cAAc;gBACzB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAEzC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAAuC,EAAQ,EAAE;YACvE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAA0C,EAAQ,EAAE;YAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1C,OAAO;aACR;YAED,uBAAuB;YACvB,IAAI,KAAK,CAAC,GAAG,EAAE;gBACb,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAa,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;wBAC/D,iCAAiC;wBACjC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;4BACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;4BACtC,OAAO;yBACR;qBACF;iBACF;gBACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;wBACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE;4BACzC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;6BAChC;wBACH,CAAC,CAAC,CAAC;wBACH,KAAK,CAAC,eAAe,EAAE,CAAC;wBACxB,OAAO;qBACR;iBACF;aACF;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;gBACzC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBACrD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;iBAC/B;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACtC,uBAAuB;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IACE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,gBAAgB,EACrB;gBACA,KAAK,CAAC,eAAe,EAAE,CAAC;gBAExB,uBAAuB;gBACvB,IACE,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBACjC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB;wBAC9C,cAAc,EAChB;oBACA,uBAAuB;oBACvB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM;wBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;iBAClE;aACF;YAED,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IACE,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;gBACnC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EACrC;gBACA,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;oBACxB,aAAa,GAAG,CAAC,CAAC;iBACnB;qBAAM;oBACL,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;wBACvC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC;4BAAE,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;;4BAChE,aAAa,EAAE,CAAC;qBACtB;oBACD,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;wBACzC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;4BAAE,aAAa,GAAG,CAAC,CAAC;;4BAChE,aAAa,EAAE,CAAC;qBACtB;iBACF;aACF;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QA1aA,IAAI,CAAC,KAAK,GAAG;YACX,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAc;YACxC,SAAS,EAAE,KAAK,CAAC,SAAU;YAC3B,eAAe,EAAE,KAAK,CAAC,eAAgB;SACxC,CAAC;IACJ,CAAC;IA0Ee,MAAM;QACpB,MAAM,EACJ,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,QAAQ,EACR,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,MAAM,eAAe,GACnB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,IACE,IAAI,CAAC,aAAa,KAAK,QAAQ;YAC/B,IAAI,CAAC,cAAc,KAAK,eAAe;YACvC,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EACpD;YACA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAChD,QAAQ,EACR,eAAe,EACf,IAAI,CAAC,KAAK,CAAC,aAAa,CACzB,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SACpD;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAE9D,OAAO,CACL,6BACE,IAAI,EAAC,cAAc,EACnB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,OAAO,EAAE,IAAI,CAAC,YAAY,iBACd,wBAAwB,KAChC,KAAK,EACT,GAAG,EAAE,IAAI,CAAC,QAAQ;YAGlB,oBAAC,mBAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,qBAAqB;gBAC7D,6BACE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,CAAC,iBACC,6BAA6B,EACzC,SAAS,EAAE,UAAU,CACnB,6BAA6B,EAC7B,MAAM,IAAI,0BAA0B,EACpC,QAAQ,IAAI,4BAA4B,EACxC,WAAW,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAC1D,IAEA,IAAI,CAAC,iBAAiB,CACnB,CACc,CAClB,CACP,CAAC;IACJ,CAAC;IAwGO,SAAS;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY;YAC1B,CAAC,CAAC,IAAI,CAAC,YAAY;YACnB,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC;QACjD,MAAM,cAAc,GAAG,EAAG,CAAC,aAAa,CAAC;QACzC,uBAAuB;QACvB,OAAO,cAAc,CAAC,WAAW,IAAI,MAAM,CAAC;IAC9C,CAAC;IAED,gBAAgB;IACA,iBAAiB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChE,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAElE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnE,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,IAAI,eAAe,GACjB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,IACE,YAAY,CAAC,WAAW,KAAK,IAAI,CAAC,mBAAmB;YACrD,YAAY,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB;YAEnD,OAAO;QACT,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC;QAElD,4BAA4B;QAC5B,IAAI,YAAY,IAAI,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,eAAe,GAAG,WAAW,CAAC,QAAQ,CACpC,eAAgB,EAChB,QAAQ,EACR,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,WAAW,CACzB,CAAC;YACF,uBAAuB;YACvB,IAAI,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;IA0He,kBAAkB,CAAC,SAA2B;QAC5D,IAAI,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACxD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAc,EAAE,CAAC,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAc,EAAE,CAAC,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC1B,2CAA2C;YAC3C,2HAA2H;YAC3H,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;;AArca,wBAAY,GAA8B;IACtD,SAAS,EAAE,oBAAoB,CAAC,WAAW;IAC3C,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,IAAI;CACf,AAPyB,CAOxB;AAaF,gBAAgB;AACF,oBAAQ,GAAG,CACvB,GAAyB,EACzB,IAAqB,EACrB,WAAmB,EACnB,YAAoB,EACE,EAAE;IACxB,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;QAC5B,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,QAAQ;gBAChC,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACR,KAAK,oBAAoB,CAAC,KAAK;gBAC7B,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC;gBAChC,MAAM;YACR,KAAK,oBAAoB,CAAC,WAAW;gBACnC,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC;gBACtC,MAAM;SACT;KACF;IACD,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;QACjB,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,OAAO;gBAC/B,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC;gBACpC,MAAM;YACR,KAAK,oBAAoB,CAAC,IAAI;gBAC5B,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC;gBACjC,MAAM;YACR,KAAK,oBAAoB,CAAC,UAAU;gBAClC,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC;gBACvC,MAAM;SACT;KACF;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE;QAC9B,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,UAAU;gBAClC,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACR,KAAK,oBAAoB,CAAC,MAAM;gBAC9B,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC;gBAC/B,MAAM;YACR,KAAK,oBAAoB,CAAC,WAAW;gBACnC,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC;gBACpC,MAAM;SACT;KACF;IACD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;QAChB,QAAQ,GAAG,EAAE;YACX,KAAK,oBAAoB,CAAC,OAAO;gBAC/B,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC;gBACtC,MAAM;YACR,KAAK,oBAAoB,CAAC,GAAG;gBAC3B,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACR,KAAK,oBAAoB,CAAC,QAAQ;gBAChC,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC;gBACvC,MAAM;SACT;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC,AA3DqB,CA2DpB;AAkFF,gBAAgB;AACF,wCAA4B,GAAG,CAC3C,SAAgC,EACxB,EAAE;IACV,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,uBAAuB;IACvB,IAAI,SAAS,KAAK,SAAS;QAAE,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC;IAE1E,IAAI,SAAS,KAAK,oBAAoB,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAEvD,QAAQ,SAAS,EAAE;QACjB,KAAK,oBAAoB,CAAC,OAAO;YAC/B,SAAS,GAAG,8CAA8C,CAAC;YAC3D,MAAM;QACR,KAAK,oBAAoB,CAAC,GAAG;YAC3B,SAAS,GAAG,uBAAuB,CAAC;YACpC,MAAM;QACR,KAAK,oBAAoB,CAAC,QAAQ;YAChC,SAAS,GAAG,+CAA+C,CAAC;YAC5D,MAAM;QACR,KAAK,oBAAoB,CAAC,IAAI;YAC5B,SAAS,GAAG,wBAAwB,CAAC;YACrC,MAAM;QACR,KAAK,oBAAoB,CAAC,MAAM;YAC9B,SAAS,GAAG,0BAA0B,CAAC;YACvC,MAAM;QACR,KAAK,oBAAoB,CAAC,KAAK;YAC7B,SAAS,GAAG,yBAAyB,CAAC;YACtC,MAAM;QACR,KAAK,oBAAoB,CAAC,UAAU;YAClC,SAAS,GAAG,iDAAiD,CAAC;YAC9D,MAAM;QACR,KAAK,oBAAoB,CAAC,MAAM;YAC9B,SAAS,GAAG,0BAA0B,CAAC;YACvC,MAAM;QACR,KAAK,oBAAoB,CAAC,WAAW;YACnC,SAAS,GAAG,kDAAkD,CAAC;YAC/D,MAAM;KACT;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,AAzCyC,CAyCxC;SA9NS,WAAW","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContextMenu\n */\n\nimport \"./ContextMenu.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { DivWithOutsideClick } from \"../base/DivWithOutsideClick\";\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\nimport type { ContextMenuItemProps } from \"./ContextMenuItem\";\nimport { ContextMenuItem } from \"./ContextMenuItem\";\nimport type { ContextSubMenuProps } from \"./ContextSubMenu\";\nimport { ContextSubMenu } from \"./ContextSubMenu\";\n\n/** Properties for the [[ContextMenu]] component\n * @public\n */\nexport interface ContextMenuProps extends CommonProps {\n /** Whether ContextMenu is currently opened. */\n opened: boolean;\n /** Which direction the menu opens. Default: ContextMenuDirection.BottomRight */\n direction?: ContextMenuDirection;\n /** When click is registered outside of ContextMenu. */\n onOutsideClick?: (event: MouseEvent) => any;\n /** When list item or submenu is selected */\n onSelect?: (event: any) => any;\n /** when Escape button is pressed */\n onEsc?: (data: any) => any;\n /** Whether menu flips directions based on screen edge. Default: true */\n autoflip?: boolean;\n /** Whether menu hugs screen edge when autoflip is off. Default: true */\n edgeLimit?: boolean;\n /** Whether Hotkey press selects item, or just highlights item. Default: true */\n hotkeySelect?: boolean;\n /** starting menu item selected index Default: -1 */\n selectedIndex?: number;\n /** whether menu floats on the viewport, or the page. When false, container elements can clip menu with overflow: hidden; Default: true */\n floating?: boolean;\n /** @internal */\n parentMenu?: ContextMenu;\n /** @internal */\n parentSubmenu?: ContextSubMenu;\n /** @internal */\n ignoreNextKeyUp?: boolean;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** @internal */\ninterface ContextMenuState {\n selectedIndex: number;\n direction: ContextMenuDirection;\n ignoreNextKeyUp: boolean;\n}\n\n/**\n * A context menu populated with [[ContextMenuItem]] components.\n * Can be nested using [[ContextSubMenu]] component.\n * @public\n */\nexport class ContextMenu extends React.PureComponent<\n ContextMenuProps,\n ContextMenuState\n> {\n private _rootElement: HTMLElement | null = null;\n private _menuElement: HTMLElement | null = null;\n private _selectedElement: ContextMenuItem | ContextSubMenu | null = null;\n private _length: number = 0;\n private _hotKeyMap: Map<number, string> = new Map();\n\n private _lastChildren: React.ReactNode;\n private _lastDirection: ContextMenuDirection | undefined =\n ContextMenuDirection.BottomRight;\n private _lastSelectedIndex: number = 0;\n private _injectedChildren: React.ReactNode;\n private _parentWindowHeight: number = 0;\n private _parentWindowWidth: number = 0;\n\n public static defaultProps: Partial<ContextMenuProps> = {\n direction: ContextMenuDirection.BottomRight,\n autoflip: true,\n edgeLimit: true,\n hotkeySelect: true,\n selectedIndex: -1,\n floating: true,\n };\n\n /** @internal */\n public override readonly state: Readonly<ContextMenuState>;\n constructor(props: ContextMenuProps) {\n super(props);\n this.state = {\n selectedIndex: this.props.selectedIndex!,\n direction: props.direction!,\n ignoreNextKeyUp: props.ignoreNextKeyUp!,\n };\n }\n\n /** @internal */\n public static autoFlip = (\n dir: ContextMenuDirection,\n rect: DOMRectReadOnly,\n windowWidth: number,\n windowHeight: number\n ): ContextMenuDirection => {\n if (rect.right > windowWidth) {\n switch (dir) {\n case ContextMenuDirection.TopRight:\n dir = ContextMenuDirection.TopLeft;\n break;\n case ContextMenuDirection.Right:\n dir = ContextMenuDirection.Left;\n break;\n case ContextMenuDirection.BottomRight:\n dir = ContextMenuDirection.BottomLeft;\n break;\n }\n }\n if (rect.left < 0) {\n switch (dir) {\n case ContextMenuDirection.TopLeft:\n dir = ContextMenuDirection.TopRight;\n break;\n case ContextMenuDirection.Left:\n dir = ContextMenuDirection.Right;\n break;\n case ContextMenuDirection.BottomLeft:\n dir = ContextMenuDirection.BottomRight;\n break;\n }\n }\n if (rect.bottom > windowHeight) {\n switch (dir) {\n case ContextMenuDirection.BottomLeft:\n dir = ContextMenuDirection.TopLeft;\n break;\n case ContextMenuDirection.Bottom:\n dir = ContextMenuDirection.Top;\n break;\n case ContextMenuDirection.BottomRight:\n dir = ContextMenuDirection.TopRight;\n break;\n }\n }\n if (rect.top < 0) {\n switch (dir) {\n case ContextMenuDirection.TopLeft:\n dir = ContextMenuDirection.BottomLeft;\n break;\n case ContextMenuDirection.Top:\n dir = ContextMenuDirection.Bottom;\n break;\n case ContextMenuDirection.TopRight:\n dir = ContextMenuDirection.BottomRight;\n break;\n }\n }\n return dir;\n };\n\n private _handleHotKeyParsed = (index: number, hotKey: string) => {\n this._hotKeyMap.set(index, hotKey);\n };\n\n // istanbul ignore next\n private _handleOnOutsideClick = (event: MouseEvent): void => {\n if (this.props.opened && this.props.onOutsideClick)\n this.props.onOutsideClick(event);\n };\n\n public override render(): React.ReactElement {\n const {\n opened,\n direction,\n onOutsideClick,\n onSelect,\n onEsc,\n autoflip,\n edgeLimit,\n hotkeySelect,\n selectedIndex,\n floating,\n parentMenu,\n parentSubmenu,\n children,\n className,\n ignoreNextKeyUp,\n ...props\n } = this.props;\n const renderDirection =\n parentMenu === undefined ? this.state.direction : direction;\n\n if (\n this._lastChildren !== children ||\n this._lastDirection !== renderDirection ||\n this._lastSelectedIndex !== this.state.selectedIndex\n ) {\n this._injectedChildren = this._injectMenuItemProps(\n children,\n renderDirection,\n this.state.selectedIndex\n );\n this._lastChildren = children;\n this._lastDirection = renderDirection;\n this._lastSelectedIndex = this.state.selectedIndex;\n }\n\n const classNames = classnames(\"core-context-menu\", className);\n\n return (\n <div\n role=\"presentation\"\n className={classNames}\n onKeyUp={this._handleKeyUp}\n onClick={this._handleClick}\n data-testid=\"core-context-menu-root\"\n {...props}\n ref={this._rootRef}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={this._handleOnOutsideClick}>\n <div\n ref={this._menuRef}\n role=\"menu\"\n tabIndex={0}\n data-testid=\"core-context-menu-container\"\n className={classnames(\n \"core-context-menu-container\",\n opened && \"core-context-menu-opened\",\n floating && \"core-context-menu-floating\",\n ContextMenu.getCSSClassNameFromDirection(renderDirection)\n )}\n >\n {this._injectedChildren}\n </div>\n </DivWithOutsideClick>\n </div>\n );\n }\n\n /** @internal */\n public static getCSSClassNameFromDirection = (\n direction?: ContextMenuDirection\n ): string => {\n let className = \"\";\n\n // istanbul ignore next\n if (direction === undefined) direction = ContextMenuDirection.BottomRight;\n\n if (direction === ContextMenuDirection.None) return \"\";\n\n switch (direction) {\n case ContextMenuDirection.TopLeft:\n className = \"core-context-menu-top core-context-menu-left\";\n break;\n case ContextMenuDirection.Top:\n className = \"core-context-menu-top\";\n break;\n case ContextMenuDirection.TopRight:\n className = \"core-context-menu-top core-context-menu-right\";\n break;\n case ContextMenuDirection.Left:\n className = \"core-context-menu-left\";\n break;\n case ContextMenuDirection.Center:\n className = \"core-context-menu-center\";\n break;\n case ContextMenuDirection.Right:\n className = \"core-context-menu-right\";\n break;\n case ContextMenuDirection.BottomLeft:\n className = \"core-context-menu-bottom core-context-menu-left\";\n break;\n case ContextMenuDirection.Bottom:\n className = \"core-context-menu-bottom\";\n break;\n case ContextMenuDirection.BottomRight:\n className = \"core-context-menu-bottom core-context-menu-right\";\n break;\n }\n\n return className;\n };\n\n private _injectMenuItemProps = (\n children: React.ReactNode,\n direction: ContextMenuDirection | undefined,\n selectedIndex: number\n ) => {\n let index = 0;\n // add inheritance data to submenu children\n const ch = React.Children.map(children, (child: React.ReactNode) => {\n // Capture only ContextSubMenus and ContextMenuItems.\n if (\n child &&\n typeof child === \"object\" &&\n \"props\" in child &&\n (child.type === ContextSubMenu || child.type === ContextMenuItem) &&\n !ConditionalBooleanValue.getValue(child.props.disabled) &&\n !ConditionalBooleanValue.getValue(child.props.hidden)\n ) {\n const id = index; // get separate id variable so value stays the same when onHover is called later.\n const onHover = () => {\n this.setState({ selectedIndex: id });\n this.focus();\n };\n const ref = (el: ContextSubMenu | ContextMenuItem | null) => {\n if (selectedIndex === id)\n // only save to this._selectedElement if previously captured bool is true\n this._selectedElement = el;\n };\n const boundHandleHotKeyParse = this._handleHotKeyParsed.bind(this, id); // bind local callback for specific index\n const childProps: Partial<\n ContextSubMenuProps & ContextMenuItemProps & { ref: typeof ref }\n > = {\n parentMenu: this,\n ref,\n onHover,\n isSelected: selectedIndex === id,\n onHotKeyParsed: boundHandleHotKeyParse,\n };\n if (child.type === ContextSubMenu) {\n // add direction only to sub-menus\n childProps.direction =\n child.props.direction || /* istanbul ignore next */ direction;\n }\n index++;\n return React.cloneElement(child, childProps);\n } else return child; // Else, pass through unmodified\n });\n this._length = index;\n return ch;\n };\n\n private _rootRef = (el: HTMLDivElement | null) => {\n this._rootElement = el;\n };\n\n private _menuRef = (el: HTMLDivElement | null) => {\n this._menuElement = el;\n };\n\n private getWindow() {\n const el = this._rootElement\n ? this._rootElement\n : /* istanbul ignore next */ this._menuElement;\n const parentDocument = el!.ownerDocument;\n // istanbul ignore next\n return parentDocument.defaultView ?? window;\n }\n\n /** @internal */\n public override componentDidMount() {\n const parentWindow = this.getWindow();\n parentWindow.addEventListener(\"focus\", this._handleFocusChange);\n parentWindow.addEventListener(\"mouseup\", this._handleFocusChange);\n\n this.checkRenderDirection();\n\n if (this.props.opened) this.focus();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n const parentWindow = this.getWindow();\n parentWindow.removeEventListener(\"focus\", this._handleFocusChange);\n parentWindow.removeEventListener(\"mouseup\", this._handleFocusChange);\n }\n\n private checkRenderDirection() {\n const { direction, autoflip, parentMenu } = this.props;\n const parentWindow = this.getWindow();\n\n let renderDirection =\n parentMenu === undefined ? this.state.direction : direction;\n\n if (\n parentWindow.innerHeight === this._parentWindowHeight &&\n parentWindow.innerWidth === this._parentWindowWidth\n )\n return;\n this._parentWindowHeight = parentWindow.innerHeight;\n this._parentWindowWidth = parentWindow.innerWidth;\n\n // check if menu should flip\n if (parentWindow && autoflip && parentMenu === undefined) {\n const menuRect = this.getRect();\n renderDirection = ContextMenu.autoFlip(\n renderDirection!,\n menuRect,\n parentWindow.innerWidth,\n parentWindow.innerHeight\n );\n // istanbul ignore next\n if (renderDirection !== this.state.direction)\n this.setState({ direction: renderDirection });\n }\n }\n\n public focus = () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.focus();\n };\n\n public blur = () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.blur();\n };\n\n public getRect = (): DOMRect => {\n let clientRect = DOMRect.fromRect({ x: 0, y: 0, width: 0, height: 0 });\n\n // istanbul ignore else\n if (this._menuElement) {\n clientRect = this._menuElement.getBoundingClientRect();\n }\n return clientRect;\n };\n\n private _handleFocusChange = (event: any): void => {\n // istanbul ignore else\n if (\n this._rootElement &&\n this.props.opened &&\n event.target instanceof Node &&\n this.props.onOutsideClick &&\n !this._rootElement.contains(event.target)\n )\n this.props.onOutsideClick(event);\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (this.props.onSelect) this.props.onSelect(event);\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (this.state.ignoreNextKeyUp) {\n this.setState({ ignoreNextKeyUp: false });\n return;\n }\n\n // istanbul ignore else\n if (event.key) {\n for (const [key, value] of this._hotKeyMap) {\n if (!this.props.hotkeySelect! && key > this.state.selectedIndex) {\n // Start search at current index.\n if (event.key.toUpperCase() === value) {\n this.setState({ selectedIndex: key });\n return;\n }\n }\n }\n for (const [key, value] of this._hotKeyMap) {\n if (event.key.toUpperCase() === value) {\n this.setState({ selectedIndex: key }, () => {\n if (this.props.hotkeySelect && this._selectedElement) {\n this._selectedElement.select();\n }\n });\n event.stopPropagation();\n return;\n }\n }\n }\n\n if (event.key === Key.ArrowLeft.valueOf()) {\n event.stopPropagation();\n if (this.props.parentMenu && this.props.parentSubmenu) {\n this.props.parentSubmenu.close();\n this.props.parentMenu.focus();\n }\n if (this.props.onEsc) this.props.onEsc(event);\n }\n\n if (event.key === Key.Escape.valueOf()) {\n // istanbul ignore else\n if (this.props.onEsc) this.props.onEsc(event);\n }\n\n if (\n (event.key === Key.Enter.valueOf() ||\n event.key === Key.ArrowRight.valueOf()) &&\n this._selectedElement\n ) {\n event.stopPropagation();\n\n // istanbul ignore else\n if (\n event.key === Key.Enter.valueOf() ||\n /* istanbul ignore next */ this._selectedElement instanceof\n ContextSubMenu\n ) {\n // istanbul ignore else\n if (this._selectedElement.select) this._selectedElement.select();\n }\n }\n\n let { selectedIndex } = this.state;\n if (\n event.key === Key.ArrowUp.valueOf() ||\n event.key === Key.ArrowDown.valueOf()\n ) {\n event.stopPropagation();\n if (selectedIndex === -1) {\n selectedIndex = 0;\n } else {\n if (event.key === Key.ArrowUp.valueOf()) {\n if (this.state.selectedIndex === 0) selectedIndex = this._length - 1;\n else selectedIndex--;\n }\n if (event.key === Key.ArrowDown.valueOf()) {\n if (this.state.selectedIndex === this._length - 1) selectedIndex = 0;\n else selectedIndex++;\n }\n }\n }\n this.setState({ selectedIndex });\n };\n\n public override componentDidUpdate(prevProps: ContextMenuProps) {\n if (prevProps.selectedIndex !== this.props.selectedIndex) {\n this.setState((_, props) => ({ selectedIndex: props.selectedIndex! }));\n }\n if (!prevProps.opened && this.props.opened) {\n this.setState((_, props) => ({ selectedIndex: props.selectedIndex! }));\n }\n if (!this.props.parentMenu) {\n // const direction = this.props.direction!;\n // if ((!this.props.opened && prevProps.opened && direction !== this.state.direction) || prevProps.direction !== direction)\n this.checkRenderDirection();\n }\n }\n}\n"]}
@@ -5,7 +5,7 @@ import * as React from "react";
5
5
  import { ConditionalBooleanValue } from "@itwin/appui-abstract";
6
6
  import type { CommonProps } from "../utils/Props";
7
7
  import type { ContextMenu } from "./ContextMenu";
8
- import type { BadgeType } from "../badge/BadgeUtilities";
8
+ import type { BadgeType } from "../badge/BadgeType";
9
9
  import type { IconSpec } from "../icons/IconComponent";
10
10
  /** Properties for the [[ContextMenuItem]] component
11
11
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuItem.d.ts","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenuItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,EAC1E,WAAW;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IAC/B,gBAAgB;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,0CAA0C;IAC1C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC7C,kGAAkG;IAClG,MAAM,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC3C,wCAAwC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,yHAAyH;IACzH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,gBAAgB;AAChB,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,KAAK,CAAC,aAAa,CACtD,oBAAoB,EACpB,oBAAoB,CACrB;IACC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,gBAAgB;IAChB,OAAc,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAIvD;gBACU,KAAK,EAAE,oBAAoB;IAGvC,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAM;IACpD,MAAM,IAAI,KAAK,CAAC,YAAY;IA6E5B,iBAAiB;IAIjB,kBAAkB,CAAC,SAAS,EAAE,oBAAoB;IAMlE,OAAO,CAAC,aAAa,CAWnB;IAEF,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,gBAAgB,CAStB;IAEK,MAAM,aAOX;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,YAAY,CASlB;CACH"}
1
+ {"version":3,"file":"ContextMenuItem.d.ts","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenuItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD;;GAEG;AACH,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,EAC1E,WAAW;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IAC/B,gBAAgB;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,0CAA0C;IAC1C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC7C,kGAAkG;IAClG,MAAM,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC3C,wCAAwC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,yHAAyH;IACzH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,gBAAgB;AAChB,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,KAAK,CAAC,aAAa,CACtD,oBAAoB,EACpB,oBAAoB,CACrB;IACC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,gBAAgB;IAChB,OAAc,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAIvD;gBACU,KAAK,EAAE,oBAAoB;IAGvC,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAM;IACpD,MAAM,IAAI,KAAK,CAAC,YAAY;IAgF5B,iBAAiB;IAIjB,kBAAkB,CAAC,SAAS,EAAE,oBAAoB;IAMlE,OAAO,CAAC,aAAa,CAWnB;IAEF,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,gBAAgB,CAStB;IAEK,MAAM,aAOX;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,YAAY,CASlB;CACH"}
@@ -9,9 +9,9 @@ import * as React from "react";
9
9
  import classnames from "classnames";
10
10
  import { Key } from "ts-key-enum";
11
11
  import { ConditionalBooleanValue } from "@itwin/appui-abstract";
12
- import { BadgeUtilities } from "../badge/BadgeUtilities";
13
12
  import { TildeFinder } from "./TildeFinder";
14
13
  import { Icon } from "../icons/IconComponent";
14
+ import { Badge } from "../badge/Badge";
15
15
  /**
16
16
  * Menu Item class for use within a [[ContextMenu]] component.
17
17
  * @public
@@ -76,7 +76,6 @@ class ContextMenuItem extends React.PureComponent {
76
76
  render() {
77
77
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
78
78
  const { onClick, className, style, onSelect, icon, disabled, hidden, onHover, isSelected, parentMenu, onHotKeyParsed, badgeType, iconRight, hideIconContainer, ...props } = this.props;
79
- const badge = BadgeUtilities.getComponentForBadgeType(badgeType);
80
79
  const isDisabled = ConditionalBooleanValue.getValue(disabled);
81
80
  const isHidden = ConditionalBooleanValue.getValue(hidden);
82
81
  if (this._lastChildren !== this.props.children) {
@@ -90,7 +89,8 @@ class ContextMenuItem extends React.PureComponent {
90
89
  React.createElement("div", { className: "core-context-menu-content" }, this._parsedChildren),
91
90
  iconRight && (React.createElement("div", { className: classnames("core-context-menu-icon", "core-context-menu-icon-right") },
92
91
  React.createElement(Icon, { iconSpec: iconRight }))),
93
- badge && React.createElement("div", { className: "core-context-menu-badge" }, badge)));
92
+ badgeType && (React.createElement("div", { className: "core-context-menu-badge" },
93
+ React.createElement(Badge, { type: badgeType })))));
94
94
  }
95
95
  componentDidMount() {
96
96
  this._updateHotkey(this.props.children);
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuItem.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContextMenu\n */\n\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { Key } from \"ts-key-enum\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"../utils/Props\";\nimport type { ContextMenu } from \"./ContextMenu\";\nimport type { BadgeType } from \"../badge/BadgeUtilities\";\nimport { BadgeUtilities } from \"../badge/BadgeUtilities\";\nimport { TildeFinder } from \"./TildeFinder\";\nimport type { IconSpec } from \"../icons/IconComponent\";\nimport { Icon } from \"../icons/IconComponent\";\n\n/** Properties for the [[ContextMenuItem]] component\n * @public\n */\nexport interface ContextMenuItemProps\n extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"disabled\" | \"hidden\">,\n CommonProps {\n onSelect?: (event: any) => any;\n /** @internal */\n onHotKeyParsed?: (hotKey: string) => void;\n /** Icon to display in the left margin. */\n icon?: IconSpec;\n /** Disables any onSelect calls, hover/keyboard highlighting, and grays item. */\n disabled?: boolean | ConditionalBooleanValue;\n /** Indicates whether the item is visible or hidden. The default is for the item to be visible. */\n hidden?: boolean | ConditionalBooleanValue;\n /** Badge to be overlaid on the item. */\n badgeType?: BadgeType;\n /** Icon to display in the right margin. */\n iconRight?: IconSpec;\n /** Hide the icon container. This can be used to eliminate space used to display an icon at the left of the menu item. */\n hideIconContainer?: boolean;\n /** @internal */\n onHover?: () => any;\n /* @internal */\n isSelected?: boolean;\n /** @internal */\n parentMenu?: ContextMenu;\n}\n\n/** @internal */\ninterface ContextMenuItemState {\n hotKey?: string;\n}\n\n/**\n * Menu Item class for use within a [[ContextMenu]] component.\n * @public\n */\nexport class ContextMenuItem extends React.PureComponent<\n ContextMenuItemProps,\n ContextMenuItemState\n> {\n private _root: HTMLElement | null = null;\n private _lastChildren: React.ReactNode;\n private _parsedChildren: React.ReactNode;\n /** @internal */\n public static defaultProps: Partial<ContextMenuItemProps> = {\n disabled: false,\n hidden: false,\n isSelected: false,\n };\n constructor(props: ContextMenuItemProps) {\n super(props);\n }\n /** @internal */\n public override readonly state: Readonly<ContextMenuItemState> = {};\n public override render(): React.ReactElement {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n onClick,\n className,\n style,\n onSelect,\n icon,\n disabled,\n hidden,\n onHover,\n isSelected,\n parentMenu,\n onHotKeyParsed,\n badgeType,\n iconRight,\n hideIconContainer,\n ...props\n } = this.props;\n const badge = BadgeUtilities.getComponentForBadgeType(badgeType);\n const isDisabled = ConditionalBooleanValue.getValue(disabled);\n const isHidden = ConditionalBooleanValue.getValue(hidden);\n\n if (this._lastChildren !== this.props.children) {\n this._parsedChildren = TildeFinder.findAfterTilde(\n this.props.children\n ).node;\n this._lastChildren = this.props.children;\n }\n\n return (\n <div\n {...props}\n ref={(el) => {\n this._root = el;\n }}\n onClick={this._handleClick}\n style={style}\n onFocus={this._handleFocus}\n onKeyUp={this._handleKeyUp}\n onMouseOver={this._handleMouseOver}\n data-testid={\"core-context-menu-item\"}\n className={classnames(\n \"core-context-menu-item\",\n className,\n isDisabled && \"core-context-menu-disabled\",\n isHidden && \"core-context-menu-hidden\",\n isSelected && \"core-context-menu-is-selected\"\n )}\n role=\"menuitem\"\n tabIndex={isSelected ? 0 : -1}\n aria-disabled={isDisabled}\n aria-hidden={isHidden}\n >\n {!hideIconContainer && (\n <div className=\"core-context-menu-icon\">\n {icon !== undefined && <Icon iconSpec={icon} />}\n </div>\n )}\n <div className={\"core-context-menu-content\"}>\n {this._parsedChildren}\n </div>\n {iconRight && (\n <div\n className={classnames(\n \"core-context-menu-icon\",\n \"core-context-menu-icon-right\"\n )}\n >\n <Icon iconSpec={iconRight} />\n </div>\n )}\n {badge && <div className=\"core-context-menu-badge\">{badge}</div>}\n </div>\n );\n }\n\n public override componentDidMount() {\n this._updateHotkey(this.props.children);\n }\n\n public override componentDidUpdate(prevProps: ContextMenuItemProps) {\n if (this.props.children !== prevProps.children) {\n this._updateHotkey(this.props.children);\n }\n }\n\n private _updateHotkey = (node: React.ReactNode) => {\n let hotKey: string | undefined;\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n const isHidden = ConditionalBooleanValue.getValue(this.props.hidden);\n if (!isDisabled && !isHidden)\n hotKey = TildeFinder.findAfterTilde(node).character;\n else hotKey = undefined;\n if (hotKey && hotKey !== this.state.hotKey) {\n this.setState({ hotKey });\n if (this.props.onHotKeyParsed) this.props.onHotKeyParsed(hotKey);\n }\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n event.stopPropagation();\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\n // istanbul ignore else\n if (\n this._root &&\n this._root.style.visibility !== \"hidden\" &&\n this.props.onHover\n ) {\n this.props.onHover();\n }\n };\n\n public select = () => {\n // istanbul ignore else\n if (this._root) {\n this._root.click();\n if (this.props.parentMenu && this.props.parentMenu.props.parentSubmenu)\n this.props.parentMenu.props.parentSubmenu.close(true);\n }\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n if (isDisabled) return;\n\n if (this.props.onClick) this.props.onClick(event);\n if (this.props.onSelect) this.props.onSelect(event);\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n if (\n event.key === Key.Enter.valueOf() &&\n this.props.onSelect !== undefined &&\n !isDisabled\n ) {\n this.props.onSelect(event);\n }\n };\n}\n"]}
1
+ {"version":3,"file":"ContextMenuItem.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContextMenu\n */\n\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { Key } from \"ts-key-enum\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"../utils/Props\";\nimport type { ContextMenu } from \"./ContextMenu\";\nimport type { BadgeType } from \"../badge/BadgeType\";\nimport { TildeFinder } from \"./TildeFinder\";\nimport type { IconSpec } from \"../icons/IconComponent\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { Badge } from \"../badge/Badge\";\n\n/** Properties for the [[ContextMenuItem]] component\n * @public\n */\nexport interface ContextMenuItemProps\n extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"disabled\" | \"hidden\">,\n CommonProps {\n onSelect?: (event: any) => any;\n /** @internal */\n onHotKeyParsed?: (hotKey: string) => void;\n /** Icon to display in the left margin. */\n icon?: IconSpec;\n /** Disables any onSelect calls, hover/keyboard highlighting, and grays item. */\n disabled?: boolean | ConditionalBooleanValue;\n /** Indicates whether the item is visible or hidden. The default is for the item to be visible. */\n hidden?: boolean | ConditionalBooleanValue;\n /** Badge to be overlaid on the item. */\n badgeType?: BadgeType;\n /** Icon to display in the right margin. */\n iconRight?: IconSpec;\n /** Hide the icon container. This can be used to eliminate space used to display an icon at the left of the menu item. */\n hideIconContainer?: boolean;\n /** @internal */\n onHover?: () => any;\n /* @internal */\n isSelected?: boolean;\n /** @internal */\n parentMenu?: ContextMenu;\n}\n\n/** @internal */\ninterface ContextMenuItemState {\n hotKey?: string;\n}\n\n/**\n * Menu Item class for use within a [[ContextMenu]] component.\n * @public\n */\nexport class ContextMenuItem extends React.PureComponent<\n ContextMenuItemProps,\n ContextMenuItemState\n> {\n private _root: HTMLElement | null = null;\n private _lastChildren: React.ReactNode;\n private _parsedChildren: React.ReactNode;\n /** @internal */\n public static defaultProps: Partial<ContextMenuItemProps> = {\n disabled: false,\n hidden: false,\n isSelected: false,\n };\n constructor(props: ContextMenuItemProps) {\n super(props);\n }\n /** @internal */\n public override readonly state: Readonly<ContextMenuItemState> = {};\n public override render(): React.ReactElement {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n onClick,\n className,\n style,\n onSelect,\n icon,\n disabled,\n hidden,\n onHover,\n isSelected,\n parentMenu,\n onHotKeyParsed,\n badgeType,\n iconRight,\n hideIconContainer,\n ...props\n } = this.props;\n const isDisabled = ConditionalBooleanValue.getValue(disabled);\n const isHidden = ConditionalBooleanValue.getValue(hidden);\n\n if (this._lastChildren !== this.props.children) {\n this._parsedChildren = TildeFinder.findAfterTilde(\n this.props.children\n ).node;\n this._lastChildren = this.props.children;\n }\n\n return (\n <div\n {...props}\n ref={(el) => {\n this._root = el;\n }}\n onClick={this._handleClick}\n style={style}\n onFocus={this._handleFocus}\n onKeyUp={this._handleKeyUp}\n onMouseOver={this._handleMouseOver}\n data-testid={\"core-context-menu-item\"}\n className={classnames(\n \"core-context-menu-item\",\n className,\n isDisabled && \"core-context-menu-disabled\",\n isHidden && \"core-context-menu-hidden\",\n isSelected && \"core-context-menu-is-selected\"\n )}\n role=\"menuitem\"\n tabIndex={isSelected ? 0 : -1}\n aria-disabled={isDisabled}\n aria-hidden={isHidden}\n >\n {!hideIconContainer && (\n <div className=\"core-context-menu-icon\">\n {icon !== undefined && <Icon iconSpec={icon} />}\n </div>\n )}\n <div className={\"core-context-menu-content\"}>\n {this._parsedChildren}\n </div>\n {iconRight && (\n <div\n className={classnames(\n \"core-context-menu-icon\",\n \"core-context-menu-icon-right\"\n )}\n >\n <Icon iconSpec={iconRight} />\n </div>\n )}\n {badgeType && (\n <div className=\"core-context-menu-badge\">\n <Badge type={badgeType} />\n </div>\n )}\n </div>\n );\n }\n\n public override componentDidMount() {\n this._updateHotkey(this.props.children);\n }\n\n public override componentDidUpdate(prevProps: ContextMenuItemProps) {\n if (this.props.children !== prevProps.children) {\n this._updateHotkey(this.props.children);\n }\n }\n\n private _updateHotkey = (node: React.ReactNode) => {\n let hotKey: string | undefined;\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n const isHidden = ConditionalBooleanValue.getValue(this.props.hidden);\n if (!isDisabled && !isHidden)\n hotKey = TildeFinder.findAfterTilde(node).character;\n else hotKey = undefined;\n if (hotKey && hotKey !== this.state.hotKey) {\n this.setState({ hotKey });\n if (this.props.onHotKeyParsed) this.props.onHotKeyParsed(hotKey);\n }\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n event.stopPropagation();\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\n // istanbul ignore else\n if (\n this._root &&\n this._root.style.visibility !== \"hidden\" &&\n this.props.onHover\n ) {\n this.props.onHover();\n }\n };\n\n public select = () => {\n // istanbul ignore else\n if (this._root) {\n this._root.click();\n if (this.props.parentMenu && this.props.parentMenu.props.parentSubmenu)\n this.props.parentMenu.props.parentSubmenu.close(true);\n }\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n if (isDisabled) return;\n\n if (this.props.onClick) this.props.onClick(event);\n if (this.props.onSelect) this.props.onSelect(event);\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n if (\n event.key === Key.Enter.valueOf() &&\n this.props.onSelect !== undefined &&\n !isDisabled\n ) {\n this.props.onSelect(event);\n }\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextSubMenu.d.ts","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextSubMenu.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,EACzC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAC/B,WAAW;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;IACnC,gBAAgB;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,gBAAgB;AAChB,UAAU,mBAAmB;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CACjD,mBAAmB,EACnB,mBAAmB,CACpB;IACC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,kBAAkB,CAA4B;IAEtD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAc,YAAY,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAOtD;IAEF,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBAClD,KAAK,EAAE,mBAAmB;IAQtB,MAAM,IAAI,KAAK,CAAC,YAAY;IA4G5B,iBAAiB;IAOjB,oBAAoB;IAIpB,kBAAkB,CAChC,SAAS,EAAE,mBAAmB,EAC9B,SAAS,EAAE,mBAAmB;IAchC,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,aAAa,CAWnB;IAEK,MAAM,aAMX;IAEK,KAAK,eAAgB,OAAO,UAajC;IAEF,OAAO,CAAC,gBAAgB,CAStB;IAEF,OAAO,CAAC,YAAY,CAalB;IAEF,OAAO,CAAC,kBAAkB,CAGxB;CACH"}
1
+ {"version":3,"file":"ContextSubMenu.d.ts","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextSubMenu.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,EACzC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAC/B,WAAW;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;IACnC,gBAAgB;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,gBAAgB;AAChB,UAAU,mBAAmB;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CACjD,mBAAmB,EACnB,mBAAmB,CACpB;IACC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,kBAAkB,CAA4B;IAEtD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAc,YAAY,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAOtD;IAEF,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBAClD,KAAK,EAAE,mBAAmB;IAQtB,MAAM,IAAI,KAAK,CAAC,YAAY;IA+G5B,iBAAiB;IAOjB,oBAAoB;IAIpB,kBAAkB,CAChC,SAAS,EAAE,mBAAmB,EAC9B,SAAS,EAAE,mBAAmB;IAchC,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,aAAa,CAWnB;IAEK,MAAM,aAMX;IAEK,KAAK,eAAgB,OAAO,UAajC;IAEF,OAAO,CAAC,gBAAgB,CAStB;IAEF,OAAO,CAAC,YAAY,CAalB;IAEF,OAAO,CAAC,kBAAkB,CAGxB;CACH"}
@@ -11,9 +11,9 @@ import { ConditionalBooleanValue } from "@itwin/appui-abstract";
11
11
  import { ContextMenu } from "./ContextMenu";
12
12
  import { ContextMenuDirection } from "./ContextMenuDirection";
13
13
  import { TildeFinder } from "./TildeFinder";
14
- import { BadgeUtilities } from "../badge/BadgeUtilities";
15
14
  import { Icon } from "../icons/IconComponent";
16
15
  import { SvgCaretRightSmall } from "@itwin/itwinui-icons-react";
16
+ import { Badge } from "../badge/Badge";
17
17
  /**
18
18
  * Submenu wrapper class for use within a [[ContextMenu]] component.
19
19
  * @public
@@ -108,7 +108,6 @@ class ContextSubMenu extends React.Component {
108
108
  floating,
109
109
  parentMenu,
110
110
  };
111
- const badge = BadgeUtilities.getComponentForBadgeType(badgeType);
112
111
  const renderDirection = this.state.direction;
113
112
  const isDisabled = ConditionalBooleanValue.getValue(disabled);
114
113
  const isHidden = ConditionalBooleanValue.getValue(hidden);
@@ -128,7 +127,8 @@ class ContextSubMenu extends React.Component {
128
127
  React.createElement("div", { className: "core-context-menu-content" }, this._parsedLabel),
129
128
  React.createElement("div", { className: classnames("core-context-submenu-arrow", "icon") },
130
129
  React.createElement(Icon, { iconSpec: React.createElement(SvgCaretRightSmall, null) })),
131
- badge && React.createElement("div", { className: "core-context-menu-badge" }, badge)),
130
+ badgeType && (React.createElement("div", { className: "core-context-menu-badge" },
131
+ React.createElement(Badge, { type: badgeType })))),
132
132
  React.createElement(ContextMenu, { ref: (el) => {
133
133
  this._menuElement = el;
134
134
  }, className: "core-context-submenu-popup", opened: this.state.opened, direction: renderDirection, parentSubmenu: this, ...contextMenuProps }, children)));
@@ -1 +1 @@
1
- {"version":3,"file":"ContextSubMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextSubMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContextMenu\n */\n\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { ContextMenuItemProps } from \"./ContextMenuItem\";\nimport type { ContextMenuProps } from \"./ContextMenu\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\nimport { TildeFinder } from \"./TildeFinder\";\nimport { BadgeUtilities } from \"../badge/BadgeUtilities\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { SvgCaretRightSmall } from \"@itwin/itwinui-icons-react\";\n\n/** Properties for the [[ContextSubMenu]] component\n * @public\n */\nexport interface ContextSubMenuProps\n extends Omit<ContextMenuItemProps, \"label\">,\n Omit<ContextMenuProps, \"label\">,\n CommonProps {\n /** Text/jsx to display in the list item */\n label: string | React.ReactElement;\n /** @internal */\n onHotKeyParsed?: (hotKey: string) => void;\n}\n\n/** @internal */\ninterface ContextSubMenuState {\n opened: boolean;\n direction: ContextMenuDirection;\n hotKey?: string;\n}\n\n/**\n * Submenu wrapper class for use within a [[ContextMenu]] component.\n * @public\n */\nexport class ContextSubMenu extends React.Component<\n ContextSubMenuProps,\n ContextSubMenuState\n> {\n private _menuElement: ContextMenu | null = null;\n private _subMenuElement: HTMLElement | null = null;\n private _menuButtonElement: HTMLElement | null = null;\n\n private _lastLabel: React.ReactNode;\n private _parsedLabel: React.ReactNode;\n\n public static defaultProps: Partial<ContextSubMenuProps> = {\n direction: ContextMenuDirection.BottomRight,\n disabled: false,\n hidden: false,\n autoflip: true,\n isSelected: false,\n selectedIndex: 0,\n };\n\n /** @internal */\n public override readonly state: Readonly<ContextSubMenuState>;\n constructor(props: ContextSubMenuProps) {\n super(props);\n this.state = {\n opened: false,\n direction: props.direction!,\n };\n }\n\n public override render(): React.ReactElement {\n const {\n label,\n opened,\n direction,\n onOutsideClick,\n onEsc,\n autoflip,\n edgeLimit,\n selectedIndex,\n floating,\n parentMenu,\n parentSubmenu,\n onSelect,\n icon,\n disabled,\n hidden,\n onHover,\n isSelected,\n onHotKeyParsed,\n children,\n onClick,\n className,\n badgeType,\n ...props\n } = this.props;\n\n const onOutsideClickWrapper = (event: MouseEvent) => {\n this.close();\n onOutsideClick && onOutsideClick(event);\n };\n const contextMenuProps = {\n onOutsideClick: onOutsideClickWrapper,\n onSelect,\n onEsc,\n autoflip,\n edgeLimit,\n selectedIndex,\n floating,\n parentMenu,\n };\n const badge = BadgeUtilities.getComponentForBadgeType(badgeType);\n const renderDirection = this.state.direction;\n const isDisabled = ConditionalBooleanValue.getValue(disabled);\n const isHidden = ConditionalBooleanValue.getValue(hidden);\n\n if (this._lastLabel !== label) {\n this._parsedLabel = TildeFinder.findAfterTilde(label).node;\n this._lastLabel = label;\n }\n return (\n <div\n className={classnames(\n \"core-context-submenu\",\n ContextMenu.getCSSClassNameFromDirection(renderDirection),\n className\n )}\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n onMouseOver={this._handleMouseOver}\n ref={(el) => {\n this._subMenuElement = el;\n }}\n data-testid=\"core-context-submenu\"\n {...props}\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={this._handleClick}\n ref={(el) => {\n this._menuButtonElement = el;\n }}\n className={classnames(\n \"core-context-menu-item\",\n \"core-context-submenu-container\",\n isDisabled && \"core-context-menu-disabled\",\n isHidden && \"core-context-menu-hidden\",\n isSelected && \"core-context-menu-is-selected\"\n )}\n data-testid=\"core-context-submenu-container\"\n role=\"menuitem\"\n tabIndex={isSelected ? 0 : -1}\n aria-disabled={isDisabled}\n aria-hidden={isHidden}\n aria-haspopup={true}\n >\n <div className={classnames(\"core-context-menu-icon\", \"icon\", icon)} />\n <div className={\"core-context-menu-content\"}>{this._parsedLabel}</div>\n <div className={classnames(\"core-context-submenu-arrow\", \"icon\")}>\n <Icon iconSpec={<SvgCaretRightSmall />} />\n </div>\n {badge && <div className=\"core-context-menu-badge\">{badge}</div>}\n </div>\n <ContextMenu\n ref={(el) => {\n this._menuElement = el;\n }}\n className=\"core-context-submenu-popup\"\n opened={this.state.opened}\n direction={renderDirection}\n parentSubmenu={this}\n {...contextMenuProps}\n >\n {children}\n </ContextMenu>\n </div>\n );\n }\n\n public override componentDidMount() {\n document.addEventListener(\"click\", this._handleClickGlobal);\n this._updateHotkey(this.props.label);\n\n this.checkRenderDirection();\n }\n\n public override componentWillUnmount() {\n document.removeEventListener(\"click\", this._handleClickGlobal);\n }\n\n public override componentDidUpdate(\n prevProps: ContextSubMenuProps,\n prevState: ContextSubMenuState\n ) {\n const direction = this.props.direction!;\n if (\n (this.state.opened !== prevState.opened &&\n direction !== this.state.direction) ||\n prevProps.direction !== direction\n )\n this.checkRenderDirection();\n if (this.props.label !== prevProps.label) {\n this._updateHotkey(this.props.label);\n }\n }\n\n private getWindow() {\n const el = this._subMenuElement;\n const parentDocument = el!.ownerDocument;\n return parentDocument.defaultView;\n }\n\n private checkRenderDirection() {\n const { autoflip } = this.props;\n const parentWindow = this.getWindow();\n let renderDirection = this.state.direction;\n // istanbul ignore else\n if (parentWindow && autoflip && this._menuElement) {\n const menuRect = this._menuElement.getRect();\n renderDirection = ContextMenu.autoFlip(\n renderDirection,\n menuRect,\n parentWindow.innerWidth,\n parentWindow.innerHeight\n );\n // istanbul ignore next\n if (renderDirection !== this.state.direction)\n this.setState({ direction: renderDirection });\n }\n }\n\n private _updateHotkey = (node: React.ReactNode) => {\n let hotKey: string | undefined;\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n const isHidden = ConditionalBooleanValue.getValue(this.props.hidden);\n if (!isDisabled && !isHidden)\n hotKey = TildeFinder.findAfterTilde(node).character;\n else hotKey = undefined;\n if (hotKey && hotKey !== this.state.hotKey) {\n this.setState({ hotKey });\n if (this.props.onHotKeyParsed) this.props.onHotKeyParsed(hotKey);\n }\n };\n\n public select = () => {\n this.setState({ opened: true }, () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.focus();\n if (this.props.onSelect !== undefined) this.props.onSelect(undefined);\n });\n };\n\n public close = (propagate?: boolean) => {\n this.setState({ opened: false }, () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.blur();\n });\n // istanbul ignore next\n if (\n propagate &&\n this.props.parentMenu &&\n this.props.parentMenu.props.parentSubmenu\n ) {\n this.props.parentMenu.props.parentSubmenu.close(true);\n }\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\n // istanbul ignore else\n if (\n this._menuButtonElement &&\n this._menuButtonElement.style.visibility !== \"hidden\" &&\n this.props.onHover\n ) {\n this.props.onHover();\n }\n };\n\n private _handleClick = (event: any) => {\n event.stopPropagation();\n\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n\n // istanbul ignore else\n if (!isDisabled) {\n // istanbul ignore else\n if (this.props.onClick !== undefined) this.props.onClick(event);\n // istanbul ignore next\n if (this.props.opened) this.close();\n else this.select();\n }\n };\n\n private _handleClickGlobal = (event: any) => {\n if (this._subMenuElement && !this._subMenuElement.contains(event.target))\n this.setState((_prevState) => ({ opened: false }));\n };\n}\n"]}
1
+ {"version":3,"file":"ContextSubMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextSubMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContextMenu\n */\n\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { ContextMenuItemProps } from \"./ContextMenuItem\";\nimport type { ContextMenuProps } from \"./ContextMenu\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport type { CommonProps } from \"../utils/Props\";\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\nimport { TildeFinder } from \"./TildeFinder\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { SvgCaretRightSmall } from \"@itwin/itwinui-icons-react\";\nimport { Badge } from \"../badge/Badge\";\n\n/** Properties for the [[ContextSubMenu]] component\n * @public\n */\nexport interface ContextSubMenuProps\n extends Omit<ContextMenuItemProps, \"label\">,\n Omit<ContextMenuProps, \"label\">,\n CommonProps {\n /** Text/jsx to display in the list item */\n label: string | React.ReactElement;\n /** @internal */\n onHotKeyParsed?: (hotKey: string) => void;\n}\n\n/** @internal */\ninterface ContextSubMenuState {\n opened: boolean;\n direction: ContextMenuDirection;\n hotKey?: string;\n}\n\n/**\n * Submenu wrapper class for use within a [[ContextMenu]] component.\n * @public\n */\nexport class ContextSubMenu extends React.Component<\n ContextSubMenuProps,\n ContextSubMenuState\n> {\n private _menuElement: ContextMenu | null = null;\n private _subMenuElement: HTMLElement | null = null;\n private _menuButtonElement: HTMLElement | null = null;\n\n private _lastLabel: React.ReactNode;\n private _parsedLabel: React.ReactNode;\n\n public static defaultProps: Partial<ContextSubMenuProps> = {\n direction: ContextMenuDirection.BottomRight,\n disabled: false,\n hidden: false,\n autoflip: true,\n isSelected: false,\n selectedIndex: 0,\n };\n\n /** @internal */\n public override readonly state: Readonly<ContextSubMenuState>;\n constructor(props: ContextSubMenuProps) {\n super(props);\n this.state = {\n opened: false,\n direction: props.direction!,\n };\n }\n\n public override render(): React.ReactElement {\n const {\n label,\n opened,\n direction,\n onOutsideClick,\n onEsc,\n autoflip,\n edgeLimit,\n selectedIndex,\n floating,\n parentMenu,\n parentSubmenu,\n onSelect,\n icon,\n disabled,\n hidden,\n onHover,\n isSelected,\n onHotKeyParsed,\n children,\n onClick,\n className,\n badgeType,\n ...props\n } = this.props;\n\n const onOutsideClickWrapper = (event: MouseEvent) => {\n this.close();\n onOutsideClick && onOutsideClick(event);\n };\n const contextMenuProps = {\n onOutsideClick: onOutsideClickWrapper,\n onSelect,\n onEsc,\n autoflip,\n edgeLimit,\n selectedIndex,\n floating,\n parentMenu,\n };\n const renderDirection = this.state.direction;\n const isDisabled = ConditionalBooleanValue.getValue(disabled);\n const isHidden = ConditionalBooleanValue.getValue(hidden);\n\n if (this._lastLabel !== label) {\n this._parsedLabel = TildeFinder.findAfterTilde(label).node;\n this._lastLabel = label;\n }\n return (\n <div\n className={classnames(\n \"core-context-submenu\",\n ContextMenu.getCSSClassNameFromDirection(renderDirection),\n className\n )}\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n onMouseOver={this._handleMouseOver}\n ref={(el) => {\n this._subMenuElement = el;\n }}\n data-testid=\"core-context-submenu\"\n {...props}\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={this._handleClick}\n ref={(el) => {\n this._menuButtonElement = el;\n }}\n className={classnames(\n \"core-context-menu-item\",\n \"core-context-submenu-container\",\n isDisabled && \"core-context-menu-disabled\",\n isHidden && \"core-context-menu-hidden\",\n isSelected && \"core-context-menu-is-selected\"\n )}\n data-testid=\"core-context-submenu-container\"\n role=\"menuitem\"\n tabIndex={isSelected ? 0 : -1}\n aria-disabled={isDisabled}\n aria-hidden={isHidden}\n aria-haspopup={true}\n >\n <div className={classnames(\"core-context-menu-icon\", \"icon\", icon)} />\n <div className={\"core-context-menu-content\"}>{this._parsedLabel}</div>\n <div className={classnames(\"core-context-submenu-arrow\", \"icon\")}>\n <Icon iconSpec={<SvgCaretRightSmall />} />\n </div>\n {badgeType && (\n <div className=\"core-context-menu-badge\">\n <Badge type={badgeType} />\n </div>\n )}\n </div>\n <ContextMenu\n ref={(el) => {\n this._menuElement = el;\n }}\n className=\"core-context-submenu-popup\"\n opened={this.state.opened}\n direction={renderDirection}\n parentSubmenu={this}\n {...contextMenuProps}\n >\n {children}\n </ContextMenu>\n </div>\n );\n }\n\n public override componentDidMount() {\n document.addEventListener(\"click\", this._handleClickGlobal);\n this._updateHotkey(this.props.label);\n\n this.checkRenderDirection();\n }\n\n public override componentWillUnmount() {\n document.removeEventListener(\"click\", this._handleClickGlobal);\n }\n\n public override componentDidUpdate(\n prevProps: ContextSubMenuProps,\n prevState: ContextSubMenuState\n ) {\n const direction = this.props.direction!;\n if (\n (this.state.opened !== prevState.opened &&\n direction !== this.state.direction) ||\n prevProps.direction !== direction\n )\n this.checkRenderDirection();\n if (this.props.label !== prevProps.label) {\n this._updateHotkey(this.props.label);\n }\n }\n\n private getWindow() {\n const el = this._subMenuElement;\n const parentDocument = el!.ownerDocument;\n return parentDocument.defaultView;\n }\n\n private checkRenderDirection() {\n const { autoflip } = this.props;\n const parentWindow = this.getWindow();\n let renderDirection = this.state.direction;\n // istanbul ignore else\n if (parentWindow && autoflip && this._menuElement) {\n const menuRect = this._menuElement.getRect();\n renderDirection = ContextMenu.autoFlip(\n renderDirection,\n menuRect,\n parentWindow.innerWidth,\n parentWindow.innerHeight\n );\n // istanbul ignore next\n if (renderDirection !== this.state.direction)\n this.setState({ direction: renderDirection });\n }\n }\n\n private _updateHotkey = (node: React.ReactNode) => {\n let hotKey: string | undefined;\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n const isHidden = ConditionalBooleanValue.getValue(this.props.hidden);\n if (!isDisabled && !isHidden)\n hotKey = TildeFinder.findAfterTilde(node).character;\n else hotKey = undefined;\n if (hotKey && hotKey !== this.state.hotKey) {\n this.setState({ hotKey });\n if (this.props.onHotKeyParsed) this.props.onHotKeyParsed(hotKey);\n }\n };\n\n public select = () => {\n this.setState({ opened: true }, () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.focus();\n if (this.props.onSelect !== undefined) this.props.onSelect(undefined);\n });\n };\n\n public close = (propagate?: boolean) => {\n this.setState({ opened: false }, () => {\n // istanbul ignore else\n if (this._menuElement) this._menuElement.blur();\n });\n // istanbul ignore next\n if (\n propagate &&\n this.props.parentMenu &&\n this.props.parentMenu.props.parentSubmenu\n ) {\n this.props.parentMenu.props.parentSubmenu.close(true);\n }\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\n // istanbul ignore else\n if (\n this._menuButtonElement &&\n this._menuButtonElement.style.visibility !== \"hidden\" &&\n this.props.onHover\n ) {\n this.props.onHover();\n }\n };\n\n private _handleClick = (event: any) => {\n event.stopPropagation();\n\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n\n // istanbul ignore else\n if (!isDisabled) {\n // istanbul ignore else\n if (this.props.onClick !== undefined) this.props.onClick(event);\n // istanbul ignore next\n if (this.props.opened) this.close();\n else this.select();\n }\n };\n\n private _handleClickGlobal = (event: any) => {\n if (this._subMenuElement && !this._subMenuElement.contains(event.target))\n this.setState((_prevState) => ({ opened: false }));\n };\n}\n"]}