@itwin/core-react 4.0.0-dev.19 → 4.0.0-dev.20

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 (384) hide show
  1. package/lib/cjs/core-react/UiCore.js.map +1 -1
  2. package/lib/cjs/core-react/_geometry.scss +70 -70
  3. package/lib/cjs/core-react/_helpers.scss +51 -51
  4. package/lib/cjs/core-react/_math.scss +13 -13
  5. package/lib/cjs/core-react/_scrollbar.scss +51 -51
  6. package/lib/cjs/core-react/_typography.scss +44 -44
  7. package/lib/cjs/core-react/_z-index.scss +65 -65
  8. package/lib/cjs/core-react/autosuggest/AutoSuggest.js.map +1 -1
  9. package/lib/cjs/core-react/autosuggest/AutoSuggest.scss +79 -79
  10. package/lib/cjs/core-react/badge/Badge.js.map +1 -1
  11. package/lib/cjs/core-react/badge/Badge.scss +13 -13
  12. package/lib/cjs/core-react/badge/BadgeUtilities.js.map +1 -1
  13. package/lib/cjs/core-react/badge/BetaBadge.js.map +1 -1
  14. package/lib/cjs/core-react/badge/NewBadge.js.map +1 -1
  15. package/lib/cjs/core-react/badge/NewBadge.scss +9 -9
  16. package/lib/cjs/core-react/base/Centered.js.map +1 -1
  17. package/lib/cjs/core-react/base/Div.js.map +1 -1
  18. package/lib/cjs/core-react/base/DivWithOutsideClick.js.map +1 -1
  19. package/lib/cjs/core-react/base/FillCentered.js.map +1 -1
  20. package/lib/cjs/core-react/base/FlexWrapContainer.js.map +1 -1
  21. package/lib/cjs/core-react/base/Gap.js.map +1 -1
  22. package/lib/cjs/core-react/base/PointerEvents.js.map +1 -1
  23. package/lib/cjs/core-react/base/ScrollView.js.map +1 -1
  24. package/lib/cjs/core-react/base/base.scss +42 -42
  25. package/lib/cjs/core-react/base/classes.scss +13 -13
  26. package/lib/cjs/core-react/base/index.scss +5 -5
  27. package/lib/cjs/core-react/button/UnderlinedButton.js.map +1 -1
  28. package/lib/cjs/core-react/button/UnderlinedButton.scss +32 -32
  29. package/lib/cjs/core-react/checklistbox/CheckListBox.js.map +1 -1
  30. package/lib/cjs/core-react/checklistbox/CheckListBox.scss +21 -21
  31. package/lib/cjs/core-react/classes.scss +11 -11
  32. package/lib/cjs/core-react/colorthemes.scss +61 -61
  33. package/lib/cjs/core-react/colorvariables.scss +131 -131
  34. package/lib/cjs/core-react/contextmenu/ContextMenu.js.map +1 -1
  35. package/lib/cjs/core-react/contextmenu/ContextMenu.scss +236 -236
  36. package/lib/cjs/core-react/contextmenu/ContextMenuDirection.js.map +1 -1
  37. package/lib/cjs/core-react/contextmenu/ContextMenuDivider.js.map +1 -1
  38. package/lib/cjs/core-react/contextmenu/ContextMenuItem.js.map +1 -1
  39. package/lib/cjs/core-react/contextmenu/ContextSubMenu.js.map +1 -1
  40. package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
  41. package/lib/cjs/core-react/contextmenu/PopupContextMenu.js.map +1 -1
  42. package/lib/cjs/core-react/contextmenu/TildeFinder.js.map +1 -1
  43. package/lib/cjs/core-react/dialog/Dialog.js.map +1 -1
  44. package/lib/cjs/core-react/dialog/Dialog.scss +245 -245
  45. package/lib/cjs/core-react/dialog/GlobalDialog.js.map +1 -1
  46. package/lib/cjs/core-react/elementseparator/ElementSeparator.js.map +1 -1
  47. package/lib/cjs/core-react/elementseparator/ElementSeparator.scss +85 -85
  48. package/lib/cjs/core-react/enums/Alignment.js.map +1 -1
  49. package/lib/cjs/core-react/enums/CheckBoxState.js.map +1 -1
  50. package/lib/cjs/core-react/enums/Orientation.js.map +1 -1
  51. package/lib/cjs/core-react/enums/SortDirection.js.map +1 -1
  52. package/lib/cjs/core-react/enums/TimeFormat.js.map +1 -1
  53. package/lib/cjs/core-react/expandable/ExpandableList.js.map +1 -1
  54. package/lib/cjs/core-react/expandable/ExpandableList.scss +8 -8
  55. package/lib/cjs/core-react/expandable/classes.scss +7 -7
  56. package/lib/cjs/core-react/expandable/index.scss +5 -5
  57. package/lib/cjs/core-react/expandable/list.scss +35 -35
  58. package/lib/cjs/core-react/focus/ItemKeyboardNavigator.js.map +1 -1
  59. package/lib/cjs/core-react/focustrap/FocusTrap.js.map +1 -1
  60. package/lib/cjs/core-react/hocs/withIsPressed.js.map +1 -1
  61. package/lib/cjs/core-react/hocs/withOnOutsideClick.js.map +1 -1
  62. package/lib/cjs/core-react/hocs/withTimeout.js.map +1 -1
  63. package/lib/cjs/core-react/icons/ConditionalIconItem.js.map +1 -1
  64. package/lib/cjs/core-react/icons/IconComponent.js.map +1 -1
  65. package/lib/cjs/core-react/icons/IconComponent.scss +20 -20
  66. package/lib/cjs/core-react/icons/SvgPath.js.map +1 -1
  67. package/lib/cjs/core-react/icons/SvgPath.scss +15 -15
  68. package/lib/cjs/core-react/icons/WebFontIcon.js.map +1 -1
  69. package/lib/cjs/core-react/icons/WebFontIcon.scss +17 -17
  70. package/lib/cjs/core-react/icons/classes.scss +10 -10
  71. package/lib/cjs/core-react/icons/index.scss +6 -6
  72. package/lib/cjs/core-react/icons/mixins.scss +25 -25
  73. package/lib/cjs/core-react/icons/variables.scss +12 -12
  74. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
  75. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.scss +54 -54
  76. package/lib/cjs/core-react/index.scss +21 -21
  77. package/lib/cjs/core-react/inputs/Input.js.map +1 -1
  78. package/lib/cjs/core-react/inputs/InputLabel.js.map +1 -1
  79. package/lib/cjs/core-react/inputs/InputStatus.js.map +1 -1
  80. package/lib/cjs/core-react/inputs/LabeledComponentProps.js.map +1 -1
  81. package/lib/cjs/core-react/inputs/classes.scss +8 -8
  82. package/lib/cjs/core-react/inputs/iconinput/IconInput.js.map +1 -1
  83. package/lib/cjs/core-react/inputs/iconinput/IconInput.scss +35 -35
  84. package/lib/cjs/core-react/inputs/index.scss +9 -9
  85. package/lib/cjs/core-react/inputs/input-label.scss +90 -90
  86. package/lib/cjs/core-react/inputs/input.scss +58 -58
  87. package/lib/cjs/core-react/inputs/numberinput/NumberInput.js.map +1 -1
  88. package/lib/cjs/core-react/inputs/numberinput/NumberInput.scss +88 -88
  89. package/lib/cjs/core-react/inputs/variables.scss +38 -38
  90. package/lib/cjs/core-react/layout-variables.scss +17 -17
  91. package/lib/cjs/core-react/listbox/Listbox.js.map +1 -1
  92. package/lib/cjs/core-react/listbox/Listbox.scss +54 -54
  93. package/lib/cjs/core-react/loading/LoadingBar.js.map +1 -1
  94. package/lib/cjs/core-react/loading/LoadingBar.scss +29 -29
  95. package/lib/cjs/core-react/loading/LoadingPrompt.js.map +1 -1
  96. package/lib/cjs/core-react/loading/LoadingPrompt.scss +33 -33
  97. package/lib/cjs/core-react/loading/LoadingSpinner.js.map +1 -1
  98. package/lib/cjs/core-react/loading/LoadingSpinner.scss +26 -26
  99. package/lib/cjs/core-react/loading/LoadingStatus.js.map +1 -1
  100. package/lib/cjs/core-react/loading/LoadingStatus.scss +20 -20
  101. package/lib/cjs/core-react/loading/index.scss +5 -5
  102. package/lib/cjs/core-react/loading/mixins.scss +57 -57
  103. package/lib/cjs/core-react/messagebox/MessageBox.js.map +1 -1
  104. package/lib/cjs/core-react/messagebox/MessageBox.scss +56 -56
  105. package/lib/cjs/core-react/notification/MessageRenderer.js.map +1 -1
  106. package/lib/cjs/core-react/notification/MessageType.js.map +1 -1
  107. package/lib/cjs/core-react/popup/Popup.js.map +1 -1
  108. package/lib/cjs/core-react/popup/Popup.scss +240 -240
  109. package/lib/cjs/core-react/radialmenu/Annulus.js.map +1 -1
  110. package/lib/cjs/core-react/radialmenu/RadialMenu.js.map +1 -1
  111. package/lib/cjs/core-react/radialmenu/RadialMenu.scss +55 -55
  112. package/lib/cjs/core-react/searchbox/SearchBox.js.map +1 -1
  113. package/lib/cjs/core-react/searchbox/SearchBox.scss +47 -47
  114. package/lib/cjs/core-react/settings/SettingsContainer.js.map +1 -1
  115. package/lib/cjs/core-react/settings/SettingsContainer.scss +68 -68
  116. package/lib/cjs/core-react/settings/SettingsManager.js.map +1 -1
  117. package/lib/cjs/core-react/style/baseline.scss +11 -11
  118. package/lib/cjs/core-react/style/breakpoints.scss +41 -41
  119. package/lib/cjs/core-react/style/colors.scss +77 -77
  120. package/lib/cjs/core-react/style/index.scss +10 -10
  121. package/lib/cjs/core-react/style/mixins.scss +27 -27
  122. package/lib/cjs/core-react/style/opacity.scss +16 -16
  123. package/lib/cjs/core-react/style/themecolors.scss +123 -123
  124. package/lib/cjs/core-react/tabs/Tabs.js.map +1 -1
  125. package/lib/cjs/core-react/tabs/VerticalTabs.js.map +1 -1
  126. package/lib/cjs/core-react/tabs/classes.scss +7 -7
  127. package/lib/cjs/core-react/tabs/index.scss +5 -5
  128. package/lib/cjs/core-react/tabs/tabs.scss +96 -96
  129. package/lib/cjs/core-react/tabs/vertical.scss +51 -51
  130. package/lib/cjs/core-react/text/BlockText.js.map +1 -1
  131. package/lib/cjs/core-react/text/BodyText.js.map +1 -1
  132. package/lib/cjs/core-react/text/DisabledText.js.map +1 -1
  133. package/lib/cjs/core-react/text/FilteredText.js.map +1 -1
  134. package/lib/cjs/core-react/text/FilteredText.scss +10 -10
  135. package/lib/cjs/core-react/text/MutedText.js.map +1 -1
  136. package/lib/cjs/core-react/text/StyledText.js.map +1 -1
  137. package/lib/cjs/core-react/text/TextProps.js.map +1 -1
  138. package/lib/cjs/core-react/text/block.scss +15 -15
  139. package/lib/cjs/core-react/text/body.scss +13 -13
  140. package/lib/cjs/core-react/text/classes.scss +10 -10
  141. package/lib/cjs/core-react/text/disabled.scss +10 -10
  142. package/lib/cjs/core-react/text/index.scss +10 -10
  143. package/lib/cjs/core-react/text/mixins.scss +24 -24
  144. package/lib/cjs/core-react/text/muted.scss +10 -10
  145. package/lib/cjs/core-react/tree/Branch.js.map +1 -1
  146. package/lib/cjs/core-react/tree/Branch.scss +12 -12
  147. package/lib/cjs/core-react/tree/ExpansionToggle.js.map +1 -1
  148. package/lib/cjs/core-react/tree/ExpansionToggle.scss +32 -32
  149. package/lib/cjs/core-react/tree/Node.js.map +1 -1
  150. package/lib/cjs/core-react/tree/Node.scss +68 -68
  151. package/lib/cjs/core-react/tree/Placeholder.js.map +1 -1
  152. package/lib/cjs/core-react/tree/Placeholder.scss +17 -17
  153. package/lib/cjs/core-react/tree/Tree.js.map +1 -1
  154. package/lib/cjs/core-react/tree/Tree.scss +21 -21
  155. package/lib/cjs/core-react/uistate/LocalStateStorage.js.map +1 -1
  156. package/lib/cjs/core-react/uistate/UiStateEntry.js.map +1 -1
  157. package/lib/cjs/core-react/uistate/UiStateStorage.js.map +1 -1
  158. package/lib/cjs/core-react/utils/IconHelper.js.map +1 -1
  159. package/lib/cjs/core-react/utils/IconWebComponent.js.map +1 -1
  160. package/lib/cjs/core-react/utils/Point.js.map +1 -1
  161. package/lib/cjs/core-react/utils/Props.js.map +1 -1
  162. package/lib/cjs/core-react/utils/Rectangle.js.map +1 -1
  163. package/lib/cjs/core-react/utils/ScrollPositionMaintainer.js.map +1 -1
  164. package/lib/cjs/core-react/utils/Size.js.map +1 -1
  165. package/lib/cjs/core-react/utils/Timer.js.map +1 -1
  166. package/lib/cjs/core-react/utils/UiGeometry.js.map +1 -1
  167. package/lib/cjs/core-react/utils/flattenChildren.js.map +1 -1
  168. package/lib/cjs/core-react/utils/getBestBWContrastColor.js.map +1 -1
  169. package/lib/cjs/core-react/utils/getCssVariable.js.map +1 -1
  170. package/lib/cjs/core-react/utils/getDisplayName.js.map +1 -1
  171. package/lib/cjs/core-react/utils/getUserColor.js.map +1 -1
  172. package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
  173. package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
  174. package/lib/cjs/core-react/utils/hooks/useDisposable.js.map +1 -1
  175. package/lib/cjs/core-react/utils/hooks/useEffectSkipFirst.js.map +1 -1
  176. package/lib/cjs/core-react/utils/hooks/useEventListener.js.map +1 -1
  177. package/lib/cjs/core-react/utils/hooks/useInterval.js.map +1 -1
  178. package/lib/cjs/core-react/utils/hooks/useLifecycleLogging.js.map +1 -1
  179. package/lib/cjs/core-react/utils/hooks/useOnOutsideClick.js.map +1 -1
  180. package/lib/cjs/core-react/utils/hooks/useProximityToMouse.js.map +1 -1
  181. package/lib/cjs/core-react/utils/hooks/useRefEffect.js.map +1 -1
  182. package/lib/cjs/core-react/utils/hooks/useRefState.js.map +1 -1
  183. package/lib/cjs/core-react/utils/hooks/useRefs.js.map +1 -1
  184. package/lib/cjs/core-react/utils/hooks/useResizeObserver.js.map +1 -1
  185. package/lib/cjs/core-react/utils/hooks/useTargeted.js.map +1 -1
  186. package/lib/cjs/core-react/utils/hooks/useThrottledFn.js.map +1 -1
  187. package/lib/cjs/core-react/utils/hooks/useWidgetOpacityContext.js.map +1 -1
  188. package/lib/cjs/core-react/utils/isPromiseLike.js.map +1 -1
  189. package/lib/cjs/core-react/utils/shallowDiffers.js.map +1 -1
  190. package/lib/cjs/core-react/utils/typeUtils.js.map +1 -1
  191. package/lib/cjs/core-react.js.map +1 -1
  192. package/lib/esm/core-react/UiCore.js.map +1 -1
  193. package/lib/esm/core-react/_geometry.scss +70 -70
  194. package/lib/esm/core-react/_helpers.scss +51 -51
  195. package/lib/esm/core-react/_math.scss +13 -13
  196. package/lib/esm/core-react/_scrollbar.scss +51 -51
  197. package/lib/esm/core-react/_typography.scss +44 -44
  198. package/lib/esm/core-react/_z-index.scss +65 -65
  199. package/lib/esm/core-react/autosuggest/AutoSuggest.js.map +1 -1
  200. package/lib/esm/core-react/autosuggest/AutoSuggest.scss +79 -79
  201. package/lib/esm/core-react/badge/Badge.js.map +1 -1
  202. package/lib/esm/core-react/badge/Badge.scss +13 -13
  203. package/lib/esm/core-react/badge/BadgeUtilities.js.map +1 -1
  204. package/lib/esm/core-react/badge/BetaBadge.js.map +1 -1
  205. package/lib/esm/core-react/badge/NewBadge.js.map +1 -1
  206. package/lib/esm/core-react/badge/NewBadge.scss +9 -9
  207. package/lib/esm/core-react/base/Centered.js.map +1 -1
  208. package/lib/esm/core-react/base/Div.js.map +1 -1
  209. package/lib/esm/core-react/base/DivWithOutsideClick.js.map +1 -1
  210. package/lib/esm/core-react/base/FillCentered.js.map +1 -1
  211. package/lib/esm/core-react/base/FlexWrapContainer.js.map +1 -1
  212. package/lib/esm/core-react/base/Gap.js.map +1 -1
  213. package/lib/esm/core-react/base/PointerEvents.js.map +1 -1
  214. package/lib/esm/core-react/base/ScrollView.js.map +1 -1
  215. package/lib/esm/core-react/base/base.scss +42 -42
  216. package/lib/esm/core-react/base/classes.scss +13 -13
  217. package/lib/esm/core-react/base/index.scss +5 -5
  218. package/lib/esm/core-react/button/UnderlinedButton.js.map +1 -1
  219. package/lib/esm/core-react/button/UnderlinedButton.scss +32 -32
  220. package/lib/esm/core-react/checklistbox/CheckListBox.js.map +1 -1
  221. package/lib/esm/core-react/checklistbox/CheckListBox.scss +21 -21
  222. package/lib/esm/core-react/classes.scss +11 -11
  223. package/lib/esm/core-react/colorthemes.scss +61 -61
  224. package/lib/esm/core-react/colorvariables.scss +131 -131
  225. package/lib/esm/core-react/contextmenu/ContextMenu.js.map +1 -1
  226. package/lib/esm/core-react/contextmenu/ContextMenu.scss +236 -236
  227. package/lib/esm/core-react/contextmenu/ContextMenuDirection.js.map +1 -1
  228. package/lib/esm/core-react/contextmenu/ContextMenuDivider.js.map +1 -1
  229. package/lib/esm/core-react/contextmenu/ContextMenuItem.js.map +1 -1
  230. package/lib/esm/core-react/contextmenu/ContextSubMenu.js.map +1 -1
  231. package/lib/esm/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
  232. package/lib/esm/core-react/contextmenu/PopupContextMenu.js.map +1 -1
  233. package/lib/esm/core-react/contextmenu/TildeFinder.js.map +1 -1
  234. package/lib/esm/core-react/dialog/Dialog.js.map +1 -1
  235. package/lib/esm/core-react/dialog/Dialog.scss +245 -245
  236. package/lib/esm/core-react/dialog/GlobalDialog.js.map +1 -1
  237. package/lib/esm/core-react/elementseparator/ElementSeparator.js.map +1 -1
  238. package/lib/esm/core-react/elementseparator/ElementSeparator.scss +85 -85
  239. package/lib/esm/core-react/enums/Alignment.js.map +1 -1
  240. package/lib/esm/core-react/enums/CheckBoxState.js.map +1 -1
  241. package/lib/esm/core-react/enums/Orientation.js.map +1 -1
  242. package/lib/esm/core-react/enums/SortDirection.js.map +1 -1
  243. package/lib/esm/core-react/enums/TimeFormat.js.map +1 -1
  244. package/lib/esm/core-react/expandable/ExpandableList.js.map +1 -1
  245. package/lib/esm/core-react/expandable/ExpandableList.scss +8 -8
  246. package/lib/esm/core-react/expandable/classes.scss +7 -7
  247. package/lib/esm/core-react/expandable/index.scss +5 -5
  248. package/lib/esm/core-react/expandable/list.scss +35 -35
  249. package/lib/esm/core-react/focus/ItemKeyboardNavigator.js.map +1 -1
  250. package/lib/esm/core-react/focustrap/FocusTrap.js.map +1 -1
  251. package/lib/esm/core-react/hocs/withIsPressed.js.map +1 -1
  252. package/lib/esm/core-react/hocs/withOnOutsideClick.js.map +1 -1
  253. package/lib/esm/core-react/hocs/withTimeout.js.map +1 -1
  254. package/lib/esm/core-react/icons/ConditionalIconItem.js.map +1 -1
  255. package/lib/esm/core-react/icons/IconComponent.js.map +1 -1
  256. package/lib/esm/core-react/icons/IconComponent.scss +20 -20
  257. package/lib/esm/core-react/icons/SvgPath.js.map +1 -1
  258. package/lib/esm/core-react/icons/SvgPath.scss +15 -15
  259. package/lib/esm/core-react/icons/WebFontIcon.js.map +1 -1
  260. package/lib/esm/core-react/icons/WebFontIcon.scss +17 -17
  261. package/lib/esm/core-react/icons/classes.scss +10 -10
  262. package/lib/esm/core-react/icons/index.scss +6 -6
  263. package/lib/esm/core-react/icons/mixins.scss +25 -25
  264. package/lib/esm/core-react/icons/variables.scss +12 -12
  265. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
  266. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.scss +54 -54
  267. package/lib/esm/core-react/index.scss +21 -21
  268. package/lib/esm/core-react/inputs/Input.js.map +1 -1
  269. package/lib/esm/core-react/inputs/InputLabel.js.map +1 -1
  270. package/lib/esm/core-react/inputs/InputStatus.js.map +1 -1
  271. package/lib/esm/core-react/inputs/LabeledComponentProps.js.map +1 -1
  272. package/lib/esm/core-react/inputs/classes.scss +8 -8
  273. package/lib/esm/core-react/inputs/iconinput/IconInput.js.map +1 -1
  274. package/lib/esm/core-react/inputs/iconinput/IconInput.scss +35 -35
  275. package/lib/esm/core-react/inputs/index.scss +9 -9
  276. package/lib/esm/core-react/inputs/input-label.scss +90 -90
  277. package/lib/esm/core-react/inputs/input.scss +58 -58
  278. package/lib/esm/core-react/inputs/numberinput/NumberInput.js.map +1 -1
  279. package/lib/esm/core-react/inputs/numberinput/NumberInput.scss +88 -88
  280. package/lib/esm/core-react/inputs/variables.scss +38 -38
  281. package/lib/esm/core-react/layout-variables.scss +17 -17
  282. package/lib/esm/core-react/listbox/Listbox.js.map +1 -1
  283. package/lib/esm/core-react/listbox/Listbox.scss +54 -54
  284. package/lib/esm/core-react/loading/LoadingBar.js.map +1 -1
  285. package/lib/esm/core-react/loading/LoadingBar.scss +29 -29
  286. package/lib/esm/core-react/loading/LoadingPrompt.js.map +1 -1
  287. package/lib/esm/core-react/loading/LoadingPrompt.scss +33 -33
  288. package/lib/esm/core-react/loading/LoadingSpinner.js.map +1 -1
  289. package/lib/esm/core-react/loading/LoadingSpinner.scss +26 -26
  290. package/lib/esm/core-react/loading/LoadingStatus.js.map +1 -1
  291. package/lib/esm/core-react/loading/LoadingStatus.scss +20 -20
  292. package/lib/esm/core-react/loading/index.scss +5 -5
  293. package/lib/esm/core-react/loading/mixins.scss +57 -57
  294. package/lib/esm/core-react/messagebox/MessageBox.js.map +1 -1
  295. package/lib/esm/core-react/messagebox/MessageBox.scss +56 -56
  296. package/lib/esm/core-react/notification/MessageRenderer.js.map +1 -1
  297. package/lib/esm/core-react/notification/MessageType.js.map +1 -1
  298. package/lib/esm/core-react/popup/Popup.js.map +1 -1
  299. package/lib/esm/core-react/popup/Popup.scss +240 -240
  300. package/lib/esm/core-react/radialmenu/Annulus.js.map +1 -1
  301. package/lib/esm/core-react/radialmenu/RadialMenu.js.map +1 -1
  302. package/lib/esm/core-react/radialmenu/RadialMenu.scss +55 -55
  303. package/lib/esm/core-react/searchbox/SearchBox.js.map +1 -1
  304. package/lib/esm/core-react/searchbox/SearchBox.scss +47 -47
  305. package/lib/esm/core-react/settings/SettingsContainer.js.map +1 -1
  306. package/lib/esm/core-react/settings/SettingsContainer.scss +68 -68
  307. package/lib/esm/core-react/settings/SettingsManager.js.map +1 -1
  308. package/lib/esm/core-react/style/baseline.scss +11 -11
  309. package/lib/esm/core-react/style/breakpoints.scss +41 -41
  310. package/lib/esm/core-react/style/colors.scss +77 -77
  311. package/lib/esm/core-react/style/index.scss +10 -10
  312. package/lib/esm/core-react/style/mixins.scss +27 -27
  313. package/lib/esm/core-react/style/opacity.scss +16 -16
  314. package/lib/esm/core-react/style/themecolors.scss +123 -123
  315. package/lib/esm/core-react/tabs/Tabs.js.map +1 -1
  316. package/lib/esm/core-react/tabs/VerticalTabs.js.map +1 -1
  317. package/lib/esm/core-react/tabs/classes.scss +7 -7
  318. package/lib/esm/core-react/tabs/index.scss +5 -5
  319. package/lib/esm/core-react/tabs/tabs.scss +96 -96
  320. package/lib/esm/core-react/tabs/vertical.scss +51 -51
  321. package/lib/esm/core-react/text/BlockText.js.map +1 -1
  322. package/lib/esm/core-react/text/BodyText.js.map +1 -1
  323. package/lib/esm/core-react/text/DisabledText.js.map +1 -1
  324. package/lib/esm/core-react/text/FilteredText.js.map +1 -1
  325. package/lib/esm/core-react/text/FilteredText.scss +10 -10
  326. package/lib/esm/core-react/text/MutedText.js.map +1 -1
  327. package/lib/esm/core-react/text/StyledText.js.map +1 -1
  328. package/lib/esm/core-react/text/TextProps.js.map +1 -1
  329. package/lib/esm/core-react/text/block.scss +15 -15
  330. package/lib/esm/core-react/text/body.scss +13 -13
  331. package/lib/esm/core-react/text/classes.scss +10 -10
  332. package/lib/esm/core-react/text/disabled.scss +10 -10
  333. package/lib/esm/core-react/text/index.scss +10 -10
  334. package/lib/esm/core-react/text/mixins.scss +24 -24
  335. package/lib/esm/core-react/text/muted.scss +10 -10
  336. package/lib/esm/core-react/tree/Branch.js.map +1 -1
  337. package/lib/esm/core-react/tree/Branch.scss +12 -12
  338. package/lib/esm/core-react/tree/ExpansionToggle.js.map +1 -1
  339. package/lib/esm/core-react/tree/ExpansionToggle.scss +32 -32
  340. package/lib/esm/core-react/tree/Node.js.map +1 -1
  341. package/lib/esm/core-react/tree/Node.scss +68 -68
  342. package/lib/esm/core-react/tree/Placeholder.js.map +1 -1
  343. package/lib/esm/core-react/tree/Placeholder.scss +17 -17
  344. package/lib/esm/core-react/tree/Tree.js.map +1 -1
  345. package/lib/esm/core-react/tree/Tree.scss +21 -21
  346. package/lib/esm/core-react/uistate/LocalStateStorage.js.map +1 -1
  347. package/lib/esm/core-react/uistate/UiStateEntry.js.map +1 -1
  348. package/lib/esm/core-react/uistate/UiStateStorage.js.map +1 -1
  349. package/lib/esm/core-react/utils/IconHelper.js.map +1 -1
  350. package/lib/esm/core-react/utils/IconWebComponent.js.map +1 -1
  351. package/lib/esm/core-react/utils/Point.js.map +1 -1
  352. package/lib/esm/core-react/utils/Props.js.map +1 -1
  353. package/lib/esm/core-react/utils/Rectangle.js.map +1 -1
  354. package/lib/esm/core-react/utils/ScrollPositionMaintainer.js.map +1 -1
  355. package/lib/esm/core-react/utils/Size.js.map +1 -1
  356. package/lib/esm/core-react/utils/Timer.js.map +1 -1
  357. package/lib/esm/core-react/utils/UiGeometry.js.map +1 -1
  358. package/lib/esm/core-react/utils/flattenChildren.js.map +1 -1
  359. package/lib/esm/core-react/utils/getBestBWContrastColor.js.map +1 -1
  360. package/lib/esm/core-react/utils/getCssVariable.js.map +1 -1
  361. package/lib/esm/core-react/utils/getDisplayName.js.map +1 -1
  362. package/lib/esm/core-react/utils/getUserColor.js.map +1 -1
  363. package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
  364. package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
  365. package/lib/esm/core-react/utils/hooks/useDisposable.js.map +1 -1
  366. package/lib/esm/core-react/utils/hooks/useEffectSkipFirst.js.map +1 -1
  367. package/lib/esm/core-react/utils/hooks/useEventListener.js.map +1 -1
  368. package/lib/esm/core-react/utils/hooks/useInterval.js.map +1 -1
  369. package/lib/esm/core-react/utils/hooks/useLifecycleLogging.js.map +1 -1
  370. package/lib/esm/core-react/utils/hooks/useOnOutsideClick.js.map +1 -1
  371. package/lib/esm/core-react/utils/hooks/useProximityToMouse.js.map +1 -1
  372. package/lib/esm/core-react/utils/hooks/useRefEffect.js.map +1 -1
  373. package/lib/esm/core-react/utils/hooks/useRefState.js.map +1 -1
  374. package/lib/esm/core-react/utils/hooks/useRefs.js.map +1 -1
  375. package/lib/esm/core-react/utils/hooks/useResizeObserver.js.map +1 -1
  376. package/lib/esm/core-react/utils/hooks/useTargeted.js.map +1 -1
  377. package/lib/esm/core-react/utils/hooks/useThrottledFn.js.map +1 -1
  378. package/lib/esm/core-react/utils/hooks/useWidgetOpacityContext.js.map +1 -1
  379. package/lib/esm/core-react/utils/isPromiseLike.js.map +1 -1
  380. package/lib/esm/core-react/utils/shallowDiffers.js.map +1 -1
  381. package/lib/esm/core-react/utils/typeUtils.js.map +1 -1
  382. package/lib/esm/core-react.js.map +1 -1
  383. package/lib/public/locales/en/UiCore.json +30 -30
  384. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuItem.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextMenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContextMenu\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { BadgeType, ConditionalBooleanValue, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { CommonProps } from \"../utils/Props\";\r\nimport { ContextMenu } from \"./ContextMenu\";\r\nimport { BadgeUtilities } from \"../badge/BadgeUtilities\";\r\nimport { TildeFinder } from \"./TildeFinder\";\r\nimport { Icon, IconSpec } from \"../icons/IconComponent\";\r\n\r\n/** Properties for the [[ContextMenuItem]] component\r\n * @public\r\n */\r\nexport interface ContextMenuItemProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"disabled\" | \"hidden\">, CommonProps {\r\n onSelect?: (event: any) => any;\r\n /** @internal */\r\n onHotKeyParsed?: (hotKey: string) => void;\r\n /** Icon to display in the left margin. */\r\n icon?: IconSpec;\r\n /** Disables any onSelect calls, hover/keyboard highlighting, and grays item. */\r\n disabled?: boolean | ConditionalBooleanValue;\r\n /** Indicates whether the item is visible or hidden. The default is for the item to be visible. */\r\n hidden?: boolean | ConditionalBooleanValue;\r\n /** Badge to be overlaid on the item. */\r\n badgeType?: BadgeType;\r\n /** Icon to display in the right margin. */\r\n iconRight?: IconSpec;\r\n /** Hide the icon container. This can be used to eliminate space used to display an icon at the left of the menu item. */\r\n hideIconContainer?: boolean;\r\n /** @internal */\r\n onHover?: () => any;\r\n /* @internal */\r\n isSelected?: boolean;\r\n /** @internal */\r\n parentMenu?: ContextMenu;\r\n}\r\n\r\n/** @internal */\r\ninterface ContextMenuItemState {\r\n hotKey?: string;\r\n}\r\n\r\n/**\r\n * Menu Item class for use within a [[ContextMenu]] component.\r\n * @public\r\n */\r\nexport class ContextMenuItem extends React.PureComponent<ContextMenuItemProps, ContextMenuItemState> {\r\n private _root: HTMLElement | null = null;\r\n private _lastChildren: React.ReactNode;\r\n private _parsedChildren: React.ReactNode;\r\n /** @internal */\r\n public static defaultProps: Partial<ContextMenuItemProps> = {\r\n disabled: false,\r\n hidden: false,\r\n isSelected: false,\r\n };\r\n constructor(props: ContextMenuItemProps) {\r\n super(props);\r\n }\r\n /** @internal */\r\n public override readonly state: Readonly<ContextMenuItemState> = {};\r\n public override render(): JSX.Element {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { onClick, className, style, onSelect, icon, disabled, hidden, onHover, isSelected, parentMenu, onHotKeyParsed, badgeType, iconRight,\r\n hideIconContainer, ...props } = this.props;\r\n const badge = BadgeUtilities.getComponentForBadgeType(badgeType);\r\n const isDisabled = ConditionalBooleanValue.getValue(disabled);\r\n const isHidden = ConditionalBooleanValue.getValue(hidden);\r\n\r\n if (this._lastChildren !== this.props.children) {\r\n this._parsedChildren = TildeFinder.findAfterTilde(this.props.children).node;\r\n this._lastChildren = this.props.children;\r\n }\r\n\r\n return (\r\n <div\r\n {...props}\r\n ref={(el) => { this._root = el; }}\r\n onClick={this._handleClick}\r\n style={style}\r\n onFocus={this._handleFocus}\r\n onKeyUp={this._handleKeyUp}\r\n onMouseOver={this._handleMouseOver}\r\n data-testid={\"core-context-menu-item\"}\r\n className={classnames(\"core-context-menu-item\", className,\r\n isDisabled && \"core-context-menu-disabled\",\r\n isHidden && \"core-context-menu-hidden\",\r\n isSelected && \"core-context-menu-is-selected\")\r\n }\r\n role=\"menuitem\"\r\n tabIndex={isSelected ? 0 : -1}\r\n aria-disabled={isDisabled}\r\n aria-hidden={isHidden}\r\n >\r\n {!hideIconContainer && <div className=\"core-context-menu-icon\">\r\n {icon !== undefined && <Icon iconSpec={icon} />}\r\n </div>}\r\n <div className={\"core-context-menu-content\"}>\r\n {this._parsedChildren}\r\n </div>\r\n {iconRight &&\r\n <div className={classnames(\"core-context-menu-icon\", \"core-context-menu-icon-right\")}>\r\n <Icon iconSpec={iconRight} />\r\n </div>\r\n }\r\n {badge &&\r\n <div className=\"core-context-menu-badge\">\r\n {badge}\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount() {\r\n this._updateHotkey(this.props.children);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ContextMenuItemProps) {\r\n if (this.props.children !== prevProps.children) {\r\n this._updateHotkey(this.props.children);\r\n }\r\n }\r\n\r\n private _updateHotkey = (node: React.ReactNode) => {\r\n let hotKey: string | undefined;\r\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\r\n const isHidden = ConditionalBooleanValue.getValue(this.props.hidden);\r\n if (!isDisabled && !isHidden)\r\n hotKey = TildeFinder.findAfterTilde(node).character;\r\n else\r\n hotKey = undefined;\r\n if (hotKey && hotKey !== this.state.hotKey) {\r\n this.setState({ hotKey });\r\n if (this.props.onHotKeyParsed)\r\n this.props.onHotKeyParsed(hotKey);\r\n }\r\n };\r\n\r\n private _handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\r\n event.stopPropagation();\r\n };\r\n\r\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\r\n // istanbul ignore else\r\n if (this._root && this._root.style.visibility !== \"hidden\" && this.props.onHover) {\r\n this.props.onHover();\r\n }\r\n };\r\n\r\n public select = () => {\r\n // istanbul ignore else\r\n if (this._root) {\r\n this._root.click();\r\n if (this.props.parentMenu && this.props.parentMenu.props.parentSubmenu)\r\n this.props.parentMenu.props.parentSubmenu.close(true);\r\n }\r\n };\r\n\r\n private _handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\r\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\r\n if (isDisabled)\r\n return;\r\n\r\n if (this.props.onClick)\r\n this.props.onClick(event);\r\n if (this.props.onSelect)\r\n this.props.onSelect(event);\r\n };\r\n\r\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\r\n if (event.key === SpecialKey.Enter && this.props.onSelect !== undefined && !isDisabled) {\r\n this.props.onSelect(event);\r\n }\r\n };\r\n}\r\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 { BadgeType, ConditionalBooleanValue, SpecialKey } from \"@itwin/appui-abstract\";\nimport { CommonProps } from \"../utils/Props\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { BadgeUtilities } from \"../badge/BadgeUtilities\";\nimport { TildeFinder } from \"./TildeFinder\";\nimport { Icon, IconSpec } from \"../icons/IconComponent\";\n\n/** Properties for the [[ContextMenuItem]] component\n * @public\n */\nexport interface ContextMenuItemProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"disabled\" | \"hidden\">, 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<ContextMenuItemProps, ContextMenuItemState> {\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(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onClick, className, style, onSelect, icon, disabled, hidden, onHover, isSelected, parentMenu, onHotKeyParsed, badgeType, iconRight,\n hideIconContainer, ...props } = 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(this.props.children).node;\n this._lastChildren = this.props.children;\n }\n\n return (\n <div\n {...props}\n ref={(el) => { this._root = el; }}\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(\"core-context-menu-item\", 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 && <div className=\"core-context-menu-icon\">\n {icon !== undefined && <Icon iconSpec={icon} />}\n </div>}\n <div className={\"core-context-menu-content\"}>\n {this._parsedChildren}\n </div>\n {iconRight &&\n <div className={classnames(\"core-context-menu-icon\", \"core-context-menu-icon-right\")}>\n <Icon iconSpec={iconRight} />\n </div>\n }\n {badge &&\n <div className=\"core-context-menu-badge\">\n {badge}\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\n hotKey = undefined;\n if (hotKey && hotKey !== this.state.hotKey) {\n this.setState({ hotKey });\n if (this.props.onHotKeyParsed)\n 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 (this._root && this._root.style.visibility !== \"hidden\" && this.props.onHover) {\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)\n return;\n\n if (this.props.onClick)\n this.props.onClick(event);\n if (this.props.onSelect)\n this.props.onSelect(event);\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\n if (event.key === SpecialKey.Enter && this.props.onSelect !== undefined && !isDisabled) {\n this.props.onSelect(event);\n }\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextSubMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/ContextSubMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContextMenu\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\r\nimport { ContextMenuItemProps } from \"./ContextMenuItem\";\r\nimport { ContextMenu, ContextMenuProps } from \"./ContextMenu\";\r\nimport { CommonProps } from \"../utils/Props\";\r\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\r\nimport { TildeFinder } from \"./TildeFinder\";\r\nimport { BadgeUtilities } from \"../badge/BadgeUtilities\";\r\nimport { Icon } from \"../icons/IconComponent\";\r\nimport { SvgCaretRight } from \"@itwin/itwinui-icons-react\";\r\n\r\n/** Properties for the [[ContextSubMenu]] component\r\n * @public\r\n */\r\nexport interface ContextSubMenuProps extends Omit<ContextMenuItemProps, \"label\">, Omit<ContextMenuProps, \"label\">, CommonProps {\r\n /** Text/jsx to display in the list item */\r\n label: string | JSX.Element;\r\n /** @internal */\r\n onHotKeyParsed?: (hotKey: string) => void;\r\n}\r\n\r\n/** @internal */\r\ninterface ContextSubMenuState {\r\n opened: boolean;\r\n direction: ContextMenuDirection;\r\n hotKey?: string;\r\n}\r\n\r\n/**\r\n * Submenu wrapper class for use within a [[ContextMenu]] component.\r\n * @public\r\n */\r\nexport class ContextSubMenu extends React.Component<ContextSubMenuProps, ContextSubMenuState> {\r\n private _menuElement: ContextMenu | null = null;\r\n private _subMenuElement: HTMLElement | null = null;\r\n private _menuButtonElement: HTMLElement | null = null;\r\n\r\n private _lastLabel: React.ReactNode;\r\n private _parsedLabel: React.ReactNode;\r\n\r\n public static defaultProps: Partial<ContextSubMenuProps> = {\r\n direction: ContextMenuDirection.BottomRight,\r\n disabled: false,\r\n hidden: false,\r\n autoflip: true,\r\n isSelected: false,\r\n selectedIndex: 0,\r\n };\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<ContextSubMenuState>;\r\n constructor(props: ContextSubMenuProps) {\r\n super(props);\r\n this.state = {\r\n opened: false,\r\n direction: props.direction!,\r\n };\r\n }\r\n\r\n public override render(): JSX.Element {\r\n const {\r\n label,\r\n opened, direction, onOutsideClick, onEsc, autoflip, edgeLimit, selectedIndex, floating, parentMenu, parentSubmenu, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n onSelect, icon, disabled, hidden, onHover, isSelected, onHotKeyParsed, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n children, onClick, className, badgeType, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n const contextMenuProps = { onOutsideClick, onSelect, onEsc, autoflip, edgeLimit, selectedIndex, floating, parentMenu };\r\n const badge = BadgeUtilities.getComponentForBadgeType(badgeType);\r\n const renderDirection = this.state.direction;\r\n const isDisabled = ConditionalBooleanValue.getValue(disabled);\r\n const isHidden = ConditionalBooleanValue.getValue(hidden);\r\n\r\n if (this._lastLabel !== label) {\r\n this._parsedLabel = TildeFinder.findAfterTilde(label).node;\r\n this._lastLabel = label;\r\n }\r\n return (\r\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\r\n <div className={classnames(\"core-context-submenu\", ContextMenu.getCSSClassNameFromDirection(renderDirection), className)}\r\n onMouseOver={this._handleMouseOver}\r\n ref={(el) => { this._subMenuElement = el; }}\r\n data-testid=\"core-context-submenu\"\r\n {...props} >\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\r\n <div\r\n onClick={this._handleClick}\r\n ref={(el) => { this._menuButtonElement = el; }}\r\n className={classnames(\"core-context-menu-item\",\r\n \"core-context-submenu-container\",\r\n isDisabled && \"core-context-menu-disabled\",\r\n isHidden && \"core-context-menu-hidden\",\r\n isSelected && \"core-context-menu-is-selected\")}\r\n data-testid=\"core-context-submenu-container\"\r\n role=\"menuitem\"\r\n tabIndex={isSelected ? 0 : -1}\r\n aria-disabled={isDisabled}\r\n aria-hidden={isHidden}\r\n aria-haspopup={true}\r\n >\r\n <div className={classnames(\"core-context-menu-icon\", \"icon\", icon)} />\r\n <div className={\"core-context-menu-content\"}>{this._parsedLabel}</div>\r\n <div className={classnames(\"core-context-submenu-arrow\", \"icon\")}><Icon iconSpec={<SvgCaretRight />} /></div>\r\n {badge &&\r\n <div className=\"core-context-menu-badge\">\r\n {badge}\r\n </div>\r\n }\r\n </div>\r\n <ContextMenu\r\n ref={(el) => { this._menuElement = el; }}\r\n className=\"core-context-submenu-popup\"\r\n opened={this.state.opened}\r\n direction={renderDirection}\r\n parentSubmenu={this}\r\n {...contextMenuProps} >\r\n {children}\r\n </ContextMenu>\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount() {\r\n document.addEventListener(\"click\", this._handleClickGlobal);\r\n this._updateHotkey(this.props.label);\r\n\r\n this.checkRenderDirection();\r\n }\r\n\r\n public override componentWillUnmount() {\r\n document.removeEventListener(\"click\", this._handleClickGlobal);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ContextSubMenuProps, prevState: ContextSubMenuState) {\r\n const direction = this.props.direction!;\r\n if ((this.state.opened !== prevState.opened && direction !== this.state.direction) || prevProps.direction !== direction)\r\n this.checkRenderDirection();\r\n if (this.props.label !== prevProps.label) {\r\n this._updateHotkey(this.props.label);\r\n }\r\n }\r\n\r\n private getWindow() {\r\n const el = this._subMenuElement;\r\n const parentDocument = el!.ownerDocument;\r\n return parentDocument.defaultView;\r\n }\r\n\r\n private checkRenderDirection() {\r\n const { autoflip } = this.props;\r\n const parentWindow = this.getWindow();\r\n let renderDirection = this.state.direction;\r\n // istanbul ignore else\r\n if (parentWindow && autoflip && this._menuElement) {\r\n const menuRect = this._menuElement.getRect();\r\n renderDirection = ContextMenu.autoFlip(renderDirection, menuRect, parentWindow.innerWidth, parentWindow.innerHeight);\r\n // istanbul ignore next\r\n if (renderDirection !== this.state.direction)\r\n this.setState({ direction: renderDirection });\r\n }\r\n }\r\n\r\n private _updateHotkey = (node: React.ReactNode) => {\r\n let hotKey: string | undefined;\r\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\r\n const isHidden = ConditionalBooleanValue.getValue(this.props.hidden);\r\n if (!isDisabled && !isHidden)\r\n hotKey = TildeFinder.findAfterTilde(node).character;\r\n else\r\n hotKey = undefined;\r\n if (hotKey && hotKey !== this.state.hotKey) {\r\n this.setState({ hotKey });\r\n if (this.props.onHotKeyParsed)\r\n this.props.onHotKeyParsed(hotKey);\r\n }\r\n };\r\n\r\n public select = () => {\r\n this.setState({ opened: true }, () => {\r\n // istanbul ignore else\r\n if (this._menuElement)\r\n this._menuElement.focus();\r\n if (this.props.onSelect !== undefined)\r\n this.props.onSelect(undefined);\r\n });\r\n };\r\n\r\n public close = (propagate?: boolean) => {\r\n this.setState({ opened: false }, () => {\r\n // istanbul ignore else\r\n if (this._menuElement)\r\n this._menuElement.blur();\r\n });\r\n // istanbul ignore next\r\n if (propagate && this.props.parentMenu && this.props.parentMenu.props.parentSubmenu) {\r\n this.props.parentMenu.props.parentSubmenu.close(true);\r\n }\r\n };\r\n\r\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\r\n // istanbul ignore else\r\n if (this._menuButtonElement && this._menuButtonElement.style.visibility !== \"hidden\" && this.props.onHover) {\r\n this.props.onHover();\r\n }\r\n };\r\n\r\n private _handleClick = (event: any) => {\r\n event.stopPropagation();\r\n\r\n const isDisabled = ConditionalBooleanValue.getValue(this.props.disabled);\r\n\r\n // istanbul ignore else\r\n if (!isDisabled) {\r\n // istanbul ignore else\r\n if (this.props.onClick !== undefined)\r\n this.props.onClick(event);\r\n // istanbul ignore next\r\n if (this.props.opened)\r\n this.close();\r\n else\r\n this.select();\r\n }\r\n };\r\n\r\n private _handleClickGlobal = (event: any) => {\r\n if (this._subMenuElement && !this._subMenuElement.contains(event.target))\r\n this.setState((_prevState) => ({ opened: false }));\r\n };\r\n}\r\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 { ContextMenuItemProps } from \"./ContextMenuItem\";\nimport { ContextMenu, ContextMenuProps } from \"./ContextMenu\";\nimport { CommonProps } from \"../utils/Props\";\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\nimport { TildeFinder } from \"./TildeFinder\";\nimport { BadgeUtilities } from \"../badge/BadgeUtilities\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { SvgCaretRight } from \"@itwin/itwinui-icons-react\";\n\n/** Properties for the [[ContextSubMenu]] component\n * @public\n */\nexport interface ContextSubMenuProps extends Omit<ContextMenuItemProps, \"label\">, Omit<ContextMenuProps, \"label\">, CommonProps {\n /** Text/jsx to display in the list item */\n label: string | JSX.Element;\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<ContextSubMenuProps, ContextSubMenuState> {\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(): JSX.Element {\n const {\n label,\n opened, direction, onOutsideClick, onEsc, autoflip, edgeLimit, selectedIndex, floating, parentMenu, parentSubmenu, // eslint-disable-line @typescript-eslint/no-unused-vars\n onSelect, icon, disabled, hidden, onHover, isSelected, onHotKeyParsed, // eslint-disable-line @typescript-eslint/no-unused-vars\n children, onClick, className, badgeType, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\n const contextMenuProps = { onOutsideClick, onSelect, onEsc, autoflip, edgeLimit, selectedIndex, floating, parentMenu };\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 // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n <div className={classnames(\"core-context-submenu\", ContextMenu.getCSSClassNameFromDirection(renderDirection), className)}\n onMouseOver={this._handleMouseOver}\n ref={(el) => { this._subMenuElement = el; }}\n data-testid=\"core-context-submenu\"\n {...props} >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={this._handleClick}\n ref={(el) => { this._menuButtonElement = el; }}\n className={classnames(\"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 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\")}><Icon iconSpec={<SvgCaretRight />} /></div>\n {badge &&\n <div className=\"core-context-menu-badge\">\n {badge}\n </div>\n }\n </div>\n <ContextMenu\n ref={(el) => { this._menuElement = el; }}\n className=\"core-context-submenu-popup\"\n opened={this.state.opened}\n direction={renderDirection}\n parentSubmenu={this}\n {...contextMenuProps} >\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(prevProps: ContextSubMenuProps, prevState: ContextSubMenuState) {\n const direction = this.props.direction!;\n if ((this.state.opened !== prevState.opened && direction !== this.state.direction) || prevProps.direction !== direction)\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(renderDirection, menuRect, parentWindow.innerWidth, parentWindow.innerHeight);\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\n hotKey = undefined;\n if (hotKey && hotKey !== this.state.hotKey) {\n this.setState({ hotKey });\n if (this.props.onHotKeyParsed)\n this.props.onHotKeyParsed(hotKey);\n }\n };\n\n public select = () => {\n this.setState({ opened: true }, () => {\n // istanbul ignore else\n if (this._menuElement)\n this._menuElement.focus();\n if (this.props.onSelect !== undefined)\n 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)\n this._menuElement.blur();\n });\n // istanbul ignore next\n if (propagate && this.props.parentMenu && this.props.parentMenu.props.parentSubmenu) {\n this.props.parentMenu.props.parentSubmenu.close(true);\n }\n };\n\n private _handleMouseOver = (_event: React.MouseEvent<HTMLDivElement>) => {\n // istanbul ignore else\n if (this._menuButtonElement && this._menuButtonElement.style.visibility !== \"hidden\" && this.props.onHover) {\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)\n this.props.onClick(event);\n // istanbul ignore next\n if (this.props.opened)\n this.close();\n else\n 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 +1 @@
1
- {"version":3,"file":"GlobalContextMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/GlobalContextMenu.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,sCAAsC;AACtC,+CAA8D;AAqB9D;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK,CAAC,aAA6D;IAOxG,YAAY,KAA6B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QALU,UAAK,GAA2B;YACvD,cAAc,EAAE,IAAI;SACrB,CAAC;QAaM,kBAAa,GAAG,CAAC,QAA4B,EAAE,EAAE;YACvD,MAAM,cAAc,GAAG,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAC;YACvD,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAC1H,IAAI,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,+BAA+B,CAAmB,CAAC;gBAC1F,IAAI,CAAC,EAAE,EAAE;oBACP,EAAE,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACzC,EAAE,CAAC,EAAE,GAAG,+BAA+B,CAAC;oBACxC,uBAAuB;oBACvB,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,qCAAqC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;iBACnH;gBACD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEhC,wDAAwD;gBACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;aACnC;QACH,CAAC,CAAC;IA1BF,CAAC;IAEe,oBAAoB;QAClC,uBAAuB;QACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,UAAU;YAChE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC5D;IACH,CAAC;IAqBe,MAAM;QACpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,wDAAwD;QACjI,MAAM,gBAAgB,GAAwB;YAC5C,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;SACP,CAAC;QAEF,MAAM,OAAO,GAAG,oBAAoB,IAAI,yBAAW,CAAC,CAAC,2DAA2D;QAEhH,OAAO,CACL,6BAAK,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IACrD,IAAI,CAAC,KAAK,CAAC,cAAc;YACxB,QAAQ,CAAC,YAAY,CACnB,6BAAK,SAAS,EAAC,0BAA0B,EAAC,KAAK,EAAE,gBAAgB;gBAC/D,oBAAC,OAAO,OACF,KAAK,GAAI,CACV;YACP,uBAAuB;YACvB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,qCAAqC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAEtH,CACP,CAAC;IACJ,CAAC;CACF;AA5DD,8CA4DC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContextMenu\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { ContextMenu, ContextMenuProps } from \"./ContextMenu\";\r\n\r\n/** Properties for the [[GlobalContextMenu]] component\r\n * @public\r\n */\r\nexport interface GlobalContextMenuProps extends ContextMenuProps {\r\n /** Unique identifier, to distinguish from other GlobalContextMenu components. Needed only if multiple GlobalContextMenus are used simultaneously. */\r\n identifier?: string;\r\n /** Specifies the x/horizontal position on the viewport. */\r\n x: number | string;\r\n /** Specifies the y/vertical position on the viewport. */\r\n y: number | string;\r\n /** Context menu element. Default: ContextMenu */\r\n contextMenuComponent?: React.ComponentType<ContextMenuProps>;\r\n}\r\n\r\n/** @internal */\r\ninterface GlobalContextMenuState {\r\n parentDocument: Document | null;\r\n}\r\n\r\n/** GlobalContextMenu React component used to display a [[ContextMenu]] at the cursor\r\n * @public\r\n */\r\nexport class GlobalContextMenu extends React.PureComponent<GlobalContextMenuProps, GlobalContextMenuState> {\r\n private _container?: HTMLDivElement;\r\n\r\n public override readonly state: GlobalContextMenuState = {\r\n parentDocument: null,\r\n };\r\n\r\n constructor(props: GlobalContextMenuProps) {\r\n super(props);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n // istanbul ignore else\r\n if (this._container && this._container.parentElement) { // cleanup\r\n this._container.parentElement.removeChild(this._container);\r\n }\r\n }\r\n\r\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\r\n const parentDocument = popupDiv?.ownerDocument ?? null;\r\n if (parentDocument) {\r\n this._container = parentDocument.createElement(\"div\");\r\n this._container.id = this.props.identifier !== undefined ? `dialog-${this.props.identifier}` : \"core-global-context-menu\";\r\n let rt = parentDocument.getElementById(\"core-global-context-menu-root\") as HTMLDivElement;\r\n if (!rt) {\r\n rt = parentDocument.createElement(\"div\");\r\n rt.id = \"core-global-context-menu-root\";\r\n // istanbul ignore next\r\n (parentDocument.body.querySelector('[data-root-container=\"iui-root-id\"]') ?? parentDocument.body).appendChild(rt);\r\n }\r\n rt.appendChild(this._container);\r\n\r\n // used to support component rendering in pop-out window\r\n this.setState({ parentDocument });\r\n }\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const { x, y, identifier, contextMenuComponent, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n const positioningStyle: React.CSSProperties = {\r\n left: x,\r\n top: y,\r\n };\r\n\r\n const CtxMenu = contextMenuComponent || ContextMenu; // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\n return (\r\n <div ref={this._handleRefSet} style={{ display: \"none\" }}>\r\n {this.state.parentDocument &&\r\n ReactDOM.createPortal(\r\n <div className=\"core-context-menu-global\" style={positioningStyle}>\r\n <CtxMenu\r\n {...props} />\r\n </div >,\r\n // istanbul ignore next\r\n this.state.parentDocument.body.querySelector('[data-root-container=\"iui-root-id\"]') ?? this.state.parentDocument.body)\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GlobalContextMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/GlobalContextMenu.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,sCAAsC;AACtC,+CAA8D;AAqB9D;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK,CAAC,aAA6D;IAOxG,YAAY,KAA6B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QALU,UAAK,GAA2B;YACvD,cAAc,EAAE,IAAI;SACrB,CAAC;QAaM,kBAAa,GAAG,CAAC,QAA4B,EAAE,EAAE;YACvD,MAAM,cAAc,GAAG,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAC;YACvD,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAC1H,IAAI,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,+BAA+B,CAAmB,CAAC;gBAC1F,IAAI,CAAC,EAAE,EAAE;oBACP,EAAE,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACzC,EAAE,CAAC,EAAE,GAAG,+BAA+B,CAAC;oBACxC,uBAAuB;oBACvB,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,qCAAqC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;iBACnH;gBACD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEhC,wDAAwD;gBACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;aACnC;QACH,CAAC,CAAC;IA1BF,CAAC;IAEe,oBAAoB;QAClC,uBAAuB;QACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,UAAU;YAChE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC5D;IACH,CAAC;IAqBe,MAAM;QACpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,wDAAwD;QACjI,MAAM,gBAAgB,GAAwB;YAC5C,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;SACP,CAAC;QAEF,MAAM,OAAO,GAAG,oBAAoB,IAAI,yBAAW,CAAC,CAAC,2DAA2D;QAEhH,OAAO,CACL,6BAAK,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IACrD,IAAI,CAAC,KAAK,CAAC,cAAc;YACxB,QAAQ,CAAC,YAAY,CACnB,6BAAK,SAAS,EAAC,0BAA0B,EAAC,KAAK,EAAE,gBAAgB;gBAC/D,oBAAC,OAAO,OACF,KAAK,GAAI,CACV;YACP,uBAAuB;YACvB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,qCAAqC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAEtH,CACP,CAAC;IACJ,CAAC;CACF;AA5DD,8CA4DC","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 * as ReactDOM from \"react-dom\";\nimport { ContextMenu, ContextMenuProps } from \"./ContextMenu\";\n\n/** Properties for the [[GlobalContextMenu]] component\n * @public\n */\nexport interface GlobalContextMenuProps extends ContextMenuProps {\n /** Unique identifier, to distinguish from other GlobalContextMenu components. Needed only if multiple GlobalContextMenus are used simultaneously. */\n identifier?: string;\n /** Specifies the x/horizontal position on the viewport. */\n x: number | string;\n /** Specifies the y/vertical position on the viewport. */\n y: number | string;\n /** Context menu element. Default: ContextMenu */\n contextMenuComponent?: React.ComponentType<ContextMenuProps>;\n}\n\n/** @internal */\ninterface GlobalContextMenuState {\n parentDocument: Document | null;\n}\n\n/** GlobalContextMenu React component used to display a [[ContextMenu]] at the cursor\n * @public\n */\nexport class GlobalContextMenu extends React.PureComponent<GlobalContextMenuProps, GlobalContextMenuState> {\n private _container?: HTMLDivElement;\n\n public override readonly state: GlobalContextMenuState = {\n parentDocument: null,\n };\n\n constructor(props: GlobalContextMenuProps) {\n super(props);\n }\n\n public override componentWillUnmount() {\n // istanbul ignore else\n if (this._container && this._container.parentElement) { // cleanup\n this._container.parentElement.removeChild(this._container);\n }\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n const parentDocument = popupDiv?.ownerDocument ?? null;\n if (parentDocument) {\n this._container = parentDocument.createElement(\"div\");\n this._container.id = this.props.identifier !== undefined ? `dialog-${this.props.identifier}` : \"core-global-context-menu\";\n let rt = parentDocument.getElementById(\"core-global-context-menu-root\") as HTMLDivElement;\n if (!rt) {\n rt = parentDocument.createElement(\"div\");\n rt.id = \"core-global-context-menu-root\";\n // istanbul ignore next\n (parentDocument.body.querySelector('[data-root-container=\"iui-root-id\"]') ?? parentDocument.body).appendChild(rt);\n }\n rt.appendChild(this._container);\n\n // used to support component rendering in pop-out window\n this.setState({ parentDocument });\n }\n };\n\n public override render(): React.ReactNode {\n const { x, y, identifier, contextMenuComponent, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\n const positioningStyle: React.CSSProperties = {\n left: x,\n top: y,\n };\n\n const CtxMenu = contextMenuComponent || ContextMenu; // eslint-disable-line @typescript-eslint/naming-convention\n\n return (\n <div ref={this._handleRefSet} style={{ display: \"none\" }}>\n {this.state.parentDocument &&\n ReactDOM.createPortal(\n <div className=\"core-context-menu-global\" style={positioningStyle}>\n <CtxMenu\n {...props} />\n </div >,\n // istanbul ignore next\n this.state.parentDocument.body.querySelector('[data-root-container=\"iui-root-id\"]') ?? this.state.parentDocument.body)\n }\n </div>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopupContextMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/PopupContextMenu.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,0CAAuC;AACvC,+CAA4C;AAC5C,0DAAyD;AAEzD,iEAA8D;AAgD9D;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACpH,MAAM,aAAa,GAAG,2CAA2C,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvF,OAAO,CACL,oBAAC,aAAK,OAAK,UAAU,EAAE,8BAA8B,QACnD,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EACpD,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QACnC,oBAAC,yBAAW,IACV,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAC9C,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EACxC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EACxD,SAAS,EAAE,aAAa,IAEvB,QAAQ,CACG,CACP,CACV,CAAC;AACJ,CAAC;AAjBD,4CAiBC;AAED,SAAS,2CAA2C,CAAC,gBAAmC;IACtF,IAAI,aAAa,GAAG,2CAAoB,CAAC,MAAM,CAAC;IAChD,QAAQ,gBAAgB,EAAE;QACxB,KAAK,iCAAgB,CAAC,GAAG;YACvB,aAAa,GAAG,2CAAoB,CAAC,GAAG,CAAC;YACzC,MAAM;QACR,KAAK,iCAAgB,CAAC,OAAO;YAC3B,aAAa,GAAG,2CAAoB,CAAC,QAAQ,CAAC;YAC9C,MAAM;QACR,KAAK,iCAAgB,CAAC,QAAQ;YAC5B,aAAa,GAAG,2CAAoB,CAAC,OAAO,CAAC;YAC7C,MAAM;QACR,KAAK,iCAAgB,CAAC,IAAI;YACxB,aAAa,GAAG,2CAAoB,CAAC,IAAI,CAAC;YAC1C,MAAM;QACR,KAAK,iCAAgB,CAAC,KAAK;YACzB,aAAa,GAAG,2CAAoB,CAAC,KAAK,CAAC;YAC3C,MAAM;QACR,KAAK,iCAAgB,CAAC,MAAM;YAC1B,aAAa,GAAG,2CAAoB,CAAC,MAAM,CAAC;YAC5C,MAAM;QACR,KAAK,iCAAgB,CAAC,UAAU;YAC9B,aAAa,GAAG,2CAAoB,CAAC,WAAW,CAAC;YACjD,MAAM;QACR,KAAK,iCAAgB,CAAC,WAAW;YAC/B,aAAa,GAAG,2CAAoB,CAAC,UAAU,CAAC;YAChD,MAAM;KACT;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContextMenu\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Popup } from \"../popup/Popup\";\r\nimport { ContextMenu } from \"./ContextMenu\";\r\nimport { RelativePosition } from \"@itwin/appui-abstract\";\r\nimport { CommonProps } from \"../utils/Props\";\r\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\r\n\r\n/** Properties for [[PopupContextMenu]] component\r\n * @public\r\n */\r\nexport interface PopupContextMenuProps extends CommonProps {\r\n /** Indicates whether the popup is shown or not (defaults to false) */\r\n isOpen: boolean;\r\n /** Direction (relative to the target) to which the popup is expanded (defaults to Bottom) */\r\n position?: RelativePosition;\r\n /** Target element to position popup */\r\n target?: HTMLElement | null;\r\n /** Function called when the popup is opened */\r\n onOpen?: () => void;\r\n /** Function called when user clicks outside the popup */\r\n onOutsideClick?: (e: MouseEvent) => void;\r\n /** Function called when the popup is closed */\r\n onClose?: () => void;\r\n /** Function called when the popup is closed on Enter */\r\n onEnter?: () => void;\r\n /** Top position (absolute positioning - defaults to 0) */\r\n top?: number;\r\n /** Left position (absolute positioning - defaults to 0) */\r\n left?: number;\r\n /** Offset from the parent (defaults to 4) */\r\n offset?: number;\r\n /** accessibility label */\r\n ariaLabel?: string;\r\n /** Indicates whether to use animation for open/close (defaults to true) */\r\n animate?: boolean;\r\n\r\n /** When list item or submenu is selected */\r\n onSelect?: (event: React.MouseEvent | undefined) => void;\r\n /** when Escape button is pressed */\r\n onEsc?: (event: React.KeyboardEvent) => void;\r\n /** Whether menu flips directions based on screen edge. Default: true */\r\n autoflip?: boolean;\r\n /** Whether menu hugs screen edge when autoflip is off. Default: true */\r\n edgeLimit?: boolean;\r\n /** Whether Hotkey press selects item, or just highlights item. Default: true */\r\n hotkeySelect?: boolean;\r\n /** starting menu item selected index Default: -1 */\r\n selectedIndex?: number;\r\n\r\n /** ContextMenu items */\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** Component that displays a ContextMenu within a Popup component, allowing the target element to be specified.\r\n * @public\r\n */\r\nexport function PopupContextMenu(props: PopupContextMenuProps) {\r\n const { style, onSelect, onEsc, autoflip, edgeLimit, hotkeySelect, selectedIndex, children, ...popupProps } = props;\r\n const menuDirection = getContextMenuDirectionFromRelativePosition(popupProps.position);\r\n return (\r\n <Popup {...popupProps} closeOnNestedPopupOutsideClick\r\n showShadow={false} showArrow={false} moveFocus={true}\r\n style={{ ...style, border: \"none\" }}>\r\n <ContextMenu\r\n opened={true} onSelect={onSelect} onEsc={onEsc}\r\n autoflip={autoflip} edgeLimit={edgeLimit}\r\n hotkeySelect={hotkeySelect} selectedIndex={selectedIndex}\r\n direction={menuDirection}\r\n >\r\n {children}\r\n </ContextMenu>\r\n </Popup >\r\n );\r\n}\r\n\r\nfunction getContextMenuDirectionFromRelativePosition(relativePosition?: RelativePosition): ContextMenuDirection {\r\n let menuDirection = ContextMenuDirection.Bottom;\r\n switch (relativePosition) {\r\n case RelativePosition.Top:\r\n menuDirection = ContextMenuDirection.Top;\r\n break;\r\n case RelativePosition.TopLeft:\r\n menuDirection = ContextMenuDirection.TopRight;\r\n break;\r\n case RelativePosition.TopRight:\r\n menuDirection = ContextMenuDirection.TopLeft;\r\n break;\r\n case RelativePosition.Left:\r\n menuDirection = ContextMenuDirection.Left;\r\n break;\r\n case RelativePosition.Right:\r\n menuDirection = ContextMenuDirection.Right;\r\n break;\r\n case RelativePosition.Bottom:\r\n menuDirection = ContextMenuDirection.Bottom;\r\n break;\r\n case RelativePosition.BottomLeft:\r\n menuDirection = ContextMenuDirection.BottomRight;\r\n break;\r\n case RelativePosition.BottomRight:\r\n menuDirection = ContextMenuDirection.BottomLeft;\r\n break;\r\n }\r\n return menuDirection;\r\n}\r\n"]}
1
+ {"version":3,"file":"PopupContextMenu.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/PopupContextMenu.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,0CAAuC;AACvC,+CAA4C;AAC5C,0DAAyD;AAEzD,iEAA8D;AAgD9D;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACpH,MAAM,aAAa,GAAG,2CAA2C,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvF,OAAO,CACL,oBAAC,aAAK,OAAK,UAAU,EAAE,8BAA8B,QACnD,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EACpD,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QACnC,oBAAC,yBAAW,IACV,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAC9C,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EACxC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EACxD,SAAS,EAAE,aAAa,IAEvB,QAAQ,CACG,CACP,CACV,CAAC;AACJ,CAAC;AAjBD,4CAiBC;AAED,SAAS,2CAA2C,CAAC,gBAAmC;IACtF,IAAI,aAAa,GAAG,2CAAoB,CAAC,MAAM,CAAC;IAChD,QAAQ,gBAAgB,EAAE;QACxB,KAAK,iCAAgB,CAAC,GAAG;YACvB,aAAa,GAAG,2CAAoB,CAAC,GAAG,CAAC;YACzC,MAAM;QACR,KAAK,iCAAgB,CAAC,OAAO;YAC3B,aAAa,GAAG,2CAAoB,CAAC,QAAQ,CAAC;YAC9C,MAAM;QACR,KAAK,iCAAgB,CAAC,QAAQ;YAC5B,aAAa,GAAG,2CAAoB,CAAC,OAAO,CAAC;YAC7C,MAAM;QACR,KAAK,iCAAgB,CAAC,IAAI;YACxB,aAAa,GAAG,2CAAoB,CAAC,IAAI,CAAC;YAC1C,MAAM;QACR,KAAK,iCAAgB,CAAC,KAAK;YACzB,aAAa,GAAG,2CAAoB,CAAC,KAAK,CAAC;YAC3C,MAAM;QACR,KAAK,iCAAgB,CAAC,MAAM;YAC1B,aAAa,GAAG,2CAAoB,CAAC,MAAM,CAAC;YAC5C,MAAM;QACR,KAAK,iCAAgB,CAAC,UAAU;YAC9B,aAAa,GAAG,2CAAoB,CAAC,WAAW,CAAC;YACjD,MAAM;QACR,KAAK,iCAAgB,CAAC,WAAW;YAC/B,aAAa,GAAG,2CAAoB,CAAC,UAAU,CAAC;YAChD,MAAM;KACT;IACD,OAAO,aAAa,CAAC;AACvB,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 ContextMenu\n */\n\nimport * as React from \"react\";\nimport { Popup } from \"../popup/Popup\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { CommonProps } from \"../utils/Props\";\nimport { ContextMenuDirection } from \"./ContextMenuDirection\";\n\n/** Properties for [[PopupContextMenu]] component\n * @public\n */\nexport interface PopupContextMenuProps extends CommonProps {\n /** Indicates whether the popup is shown or not (defaults to false) */\n isOpen: boolean;\n /** Direction (relative to the target) to which the popup is expanded (defaults to Bottom) */\n position?: RelativePosition;\n /** Target element to position popup */\n target?: HTMLElement | null;\n /** Function called when the popup is opened */\n onOpen?: () => void;\n /** Function called when user clicks outside the popup */\n onOutsideClick?: (e: MouseEvent) => void;\n /** Function called when the popup is closed */\n onClose?: () => void;\n /** Function called when the popup is closed on Enter */\n onEnter?: () => void;\n /** Top position (absolute positioning - defaults to 0) */\n top?: number;\n /** Left position (absolute positioning - defaults to 0) */\n left?: number;\n /** Offset from the parent (defaults to 4) */\n offset?: number;\n /** accessibility label */\n ariaLabel?: string;\n /** Indicates whether to use animation for open/close (defaults to true) */\n animate?: boolean;\n\n /** When list item or submenu is selected */\n onSelect?: (event: React.MouseEvent | undefined) => void;\n /** when Escape button is pressed */\n onEsc?: (event: React.KeyboardEvent) => void;\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\n /** ContextMenu items */\n children?: React.ReactNode;\n}\n\n/** Component that displays a ContextMenu within a Popup component, allowing the target element to be specified.\n * @public\n */\nexport function PopupContextMenu(props: PopupContextMenuProps) {\n const { style, onSelect, onEsc, autoflip, edgeLimit, hotkeySelect, selectedIndex, children, ...popupProps } = props;\n const menuDirection = getContextMenuDirectionFromRelativePosition(popupProps.position);\n return (\n <Popup {...popupProps} closeOnNestedPopupOutsideClick\n showShadow={false} showArrow={false} moveFocus={true}\n style={{ ...style, border: \"none\" }}>\n <ContextMenu\n opened={true} onSelect={onSelect} onEsc={onEsc}\n autoflip={autoflip} edgeLimit={edgeLimit}\n hotkeySelect={hotkeySelect} selectedIndex={selectedIndex}\n direction={menuDirection}\n >\n {children}\n </ContextMenu>\n </Popup >\n );\n}\n\nfunction getContextMenuDirectionFromRelativePosition(relativePosition?: RelativePosition): ContextMenuDirection {\n let menuDirection = ContextMenuDirection.Bottom;\n switch (relativePosition) {\n case RelativePosition.Top:\n menuDirection = ContextMenuDirection.Top;\n break;\n case RelativePosition.TopLeft:\n menuDirection = ContextMenuDirection.TopRight;\n break;\n case RelativePosition.TopRight:\n menuDirection = ContextMenuDirection.TopLeft;\n break;\n case RelativePosition.Left:\n menuDirection = ContextMenuDirection.Left;\n break;\n case RelativePosition.Right:\n menuDirection = ContextMenuDirection.Right;\n break;\n case RelativePosition.Bottom:\n menuDirection = ContextMenuDirection.Bottom;\n break;\n case RelativePosition.BottomLeft:\n menuDirection = ContextMenuDirection.BottomRight;\n break;\n case RelativePosition.BottomRight:\n menuDirection = ContextMenuDirection.BottomLeft;\n break;\n }\n return menuDirection;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TildeFinder.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/TildeFinder.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAE/B;;GAEG;AACH,MAAa,WAAW;;AACtB;;;;GAIG;AACW,0BAAc,GAAG,CAAC,IAAqB,EAA4D,EAAE;IACjH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,SAAS;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,2BAAG,GAAG,EAAC,QAAQ,IAAE,EAAE,CAAK,CAAC;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;SAC3D;KACF;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,QAAQ;YACR,IAAI,GAAG,GAA6D,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACnG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,4EAA4E;oBAC7F,GAAG,GAAG,CAAC,CAAC;oBACR,OAAO,CAAC,CAAC,IAAI,CAAC;iBACf;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;aAC3C;SACF;aAAM,IAAI,OAAO,IAAI,IAAI,EAAE;YAC1B,aAAa;YACb,MAAM,GAAG,GAA6D,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACrG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;gBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,EAAE,CAAC,KAAsB,EAAE,EAAE;oBAC9F,MAAM,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,4EAA4E;wBAC7F,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;wBAC5B,OAAO,CAAC,CAAC,IAAI,CAAC;qBACf;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC;aACH,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,OAAO,GAAG,CAAC;aACZ;SACF;KACF;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAnDS,kCAAW","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContextMenu\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\n/** Finds a tilde character in ContextMenu item label for hot key support\r\n * @internal\r\n */\r\nexport class TildeFinder {\r\n /**\r\n * Find character following a tilde character within a React.ReactNode.\r\n * @param node react node to search within for a tilde.\r\n * @returns character that was found, and the same node with tilde removed, and following character with an underline.\r\n */\r\n public static findAfterTilde = (node: React.ReactNode): { character: string | undefined, node: React.ReactNode } => {\r\n if (typeof node === \"string\") {\r\n // String\r\n const tildeIndex = node.indexOf(\"~\");\r\n if (tildeIndex !== -1 && tildeIndex <= node.length - 2) {\r\n const ch = node.charAt(tildeIndex + 1);\r\n const s1 = node.substring(0, tildeIndex);\r\n const n = <u key=\"hotkey\">{ch}</u>;\r\n const s2 = node.substring(tildeIndex + 2);\r\n return { character: ch.toUpperCase(), node: [s1, n, s2] };\r\n }\r\n } else if (node && typeof node === \"object\") {\r\n if (Array.isArray(node)) {\r\n // Array\r\n let ret: { character: string | undefined, node: React.ReactNode } = { character: undefined, node };\r\n node = node.map((child) => {\r\n const r = TildeFinder.findAfterTilde(child);\r\n if (r.character) { // if character is found, modify node instead of returning unmodified child.\r\n ret = r;\r\n return r.node;\r\n }\r\n return child;\r\n });\r\n if (ret.character) {\r\n return { character: ret.character, node };\r\n }\r\n } else if (\"props\" in node) {\r\n // React Node\r\n const ret: { character: string | undefined, node: React.ReactNode } = { character: undefined, node };\r\n ret.node = React.cloneElement(node, {\r\n children: React.Children.map(node.props.children as React.ReactNode, (child: React.ReactNode) => {\r\n const r = TildeFinder.findAfterTilde(child);\r\n if (r.character) { // if character is found, modify node instead of returning unmodified child.\r\n ret.character = r.character;\r\n return r.node;\r\n }\r\n return child;\r\n }),\r\n });\r\n if (ret.character) {\r\n return ret;\r\n }\r\n }\r\n }\r\n return { character: undefined, node };\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"TildeFinder.js","sourceRoot":"","sources":["../../../../src/core-react/contextmenu/TildeFinder.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAE/B;;GAEG;AACH,MAAa,WAAW;;AACtB;;;;GAIG;AACW,0BAAc,GAAG,CAAC,IAAqB,EAA4D,EAAE;IACjH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,SAAS;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,2BAAG,GAAG,EAAC,QAAQ,IAAE,EAAE,CAAK,CAAC;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;SAC3D;KACF;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,QAAQ;YACR,IAAI,GAAG,GAA6D,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACnG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,4EAA4E;oBAC7F,GAAG,GAAG,CAAC,CAAC;oBACR,OAAO,CAAC,CAAC,IAAI,CAAC;iBACf;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;aAC3C;SACF;aAAM,IAAI,OAAO,IAAI,IAAI,EAAE;YAC1B,aAAa;YACb,MAAM,GAAG,GAA6D,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACrG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;gBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,EAAE,CAAC,KAAsB,EAAE,EAAE;oBAC9F,MAAM,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,4EAA4E;wBAC7F,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;wBAC5B,OAAO,CAAC,CAAC,IAAI,CAAC;qBACf;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC;aACH,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,OAAO,GAAG,CAAC;aACZ;SACF;KACF;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAnDS,kCAAW","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\";\n\n/** Finds a tilde character in ContextMenu item label for hot key support\n * @internal\n */\nexport class TildeFinder {\n /**\n * Find character following a tilde character within a React.ReactNode.\n * @param node react node to search within for a tilde.\n * @returns character that was found, and the same node with tilde removed, and following character with an underline.\n */\n public static findAfterTilde = (node: React.ReactNode): { character: string | undefined, node: React.ReactNode } => {\n if (typeof node === \"string\") {\n // String\n const tildeIndex = node.indexOf(\"~\");\n if (tildeIndex !== -1 && tildeIndex <= node.length - 2) {\n const ch = node.charAt(tildeIndex + 1);\n const s1 = node.substring(0, tildeIndex);\n const n = <u key=\"hotkey\">{ch}</u>;\n const s2 = node.substring(tildeIndex + 2);\n return { character: ch.toUpperCase(), node: [s1, n, s2] };\n }\n } else if (node && typeof node === \"object\") {\n if (Array.isArray(node)) {\n // Array\n let ret: { character: string | undefined, node: React.ReactNode } = { character: undefined, node };\n node = node.map((child) => {\n const r = TildeFinder.findAfterTilde(child);\n if (r.character) { // if character is found, modify node instead of returning unmodified child.\n ret = r;\n return r.node;\n }\n return child;\n });\n if (ret.character) {\n return { character: ret.character, node };\n }\n } else if (\"props\" in node) {\n // React Node\n const ret: { character: string | undefined, node: React.ReactNode } = { character: undefined, node };\n ret.node = React.cloneElement(node, {\n children: React.Children.map(node.props.children as React.ReactNode, (child: React.ReactNode) => {\n const r = TildeFinder.findAfterTilde(child);\n if (r.character) { // if character is found, modify node instead of returning unmodified child.\n ret.character = r.character;\n return r.node;\n }\n return child;\n }),\n });\n if (ret.character) {\n return ret;\n }\n }\n }\n return { character: undefined, node };\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/core-react/dialog/Dialog.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,yBAAuB;AACvB,2CAAoC;AACpC,+BAA+B;AAC/B,0DAAsF;AACtF,qEAAkE;AAClE,sCAAmC;AAGnC,sDAAmD;AACnD,wDAA8C;AAC9C,0DAA8C;AAC9C,oEAAsD;AAEtD,0BAA0B;AAE1B;;GAEG;AACH,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,uCAAoB,CAAA;IAAE,8BAAW,CAAA;IAAE,yCAAsB,CAAA;IACzD,gCAAa,CAAA;IAAE,oCAAiB,CAAA;IAAE,kCAAe,CAAA;IACjD,6CAA0B,CAAA;IAAE,oCAAiB,CAAA;IAAE,+CAA4B,CAAA;AAC7E,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;AA2FD;;;GAGG;AACH,MAAa,MAAO,SAAQ,KAAK,CAAC,SAAmC;IAmBnE,YAAY,KAAkB;QAC5B,KAAK,CAAC,KAAK,CAAC,CAAC;QAnBP,oBAAe,GAAG,QAAQ,CAAC;QAC3B,kBAAa,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QA0C1D,kEAAkE;QAClE,uBAAuB;QACf,2BAAsB,GAAG,GAAS,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;gBACpD,OAAO;YAET,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,IAAwB,CAAC;YAC7B,IAAI,IAAwB,CAAC;YAE7B,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;gBACtC,IAAI,CAAC,GAAG,YAAY,CAAC,WAAW,GAAG,EAAE;oBACnC,IAAI,GAAG,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,GAAG,EAAE;oBAClC,IAAI,GAAG,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC;aACvC;YAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;gBAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7G,CAAC,CAAC;QASK,iBAAY,GAAG,CAAC,YAAmC,EAAE,EAAE;YAC5D,IAAI,YAAY;gBACd,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,aAAa,CAAC;QACtD,CAAC,CAAC;QAwPM,iBAAY,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC9C,IAAI,KAAK,CAAC,GAAG,KAAK,2BAAU,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;aACvB;QACH,CAAC,CAAC;QAEM,gCAA2B,GAAG,CAAC,KAAyB,EAAQ,EAAE;YACxE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBACrB,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;oBAC3D,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAClE;QACH,CAAC,CAAC;QAEM,4BAAuB,GAAG,CAAC,KAAyB,EAAQ,EAAE;YACpE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,KAAyB,EAAQ,EAAE;YACnE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC;QAEM,gCAA2B,GAAG,CAAC,KAAyB,EAAQ,EAAE;YACxE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,KAAyB,EAAQ,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;gBACrB,OAAO;YAET,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,uBAAuB;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAChE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC;oBACZ,WAAW;oBACX,WAAW;oBACX,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;aAC7E;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,KAAmB,EAAQ,EAAE;YACzD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO;gBAC/E,OAAO;YAET,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACzE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEzC,uBAAuB;YACvB,IAAI,CAAC,KAAK,SAAS,EAAE,EAAE,gDAAgD;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAChE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;aACvE;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACxB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;oBACrB,uBAAuB;oBACvB,IAAI,OAAO,QAAQ,KAAK,QAAQ;wBAC9B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACpC,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ;wBACxD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;oBAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,MAAM,GAAG,QAAQ,GAAG,CAAE,CAAC;oBACvB,uBAAuB;oBACvB,IAAI,OAAO,SAAS,KAAK,QAAQ;wBAC/B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;oBACvC,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;wBAC1D,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACxC;gBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;aAClC;YAED,uBAAuB;YACvB,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAChC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC3C,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC;oBACP,CAAC,GAAG,CAAC,CAAC;gBACR,IAAI,KAAK,CAAC,IAAI,EAAE;oBACd,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE;wBACjC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;oBAClC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;wBAChC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;oBACjC,IAAI,KAAK,EAAE;wBACT,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;4BACtB,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;qBACtB;iBACF;gBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5C;QACH,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,MAAoB,EAAQ,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC9C,OAAO;YAET,uBAAuB;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,IAAI,CAAC,QAAQ,CAAC;oBACZ,aAAa,EAAE,KAAK;oBACpB,YAAY,EAAE,KAAK;oBACnB,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,CAAC;oBACd,WAAW,EAAE,CAAC;iBACf,CAAC,CAAC;aACJ;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,YAAY,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC,CAAC;QAjbA,IAAI,CAAC,KAAK,GAAG;YACX,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS;SAC5D,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,MAAM,CAAC;IACpD,CAAC;IAEe,oBAAoB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,YAAY,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC3E,YAAY,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3E,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvE,CAAC;IAwBe,iBAAiB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACxE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvE,CAAC;IAOe,MAAM;QACpB,MAAM,EACJ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,wDAAwD;QACjI,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAC7D,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAC/E,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,EAAE,wDAAwD;QAC9J,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9C,MAAM,cAAc,GAAwB;YAC1C,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YACf,KAAK,EAAE,MAAM;SACd,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;YAC5D,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;gBAC9B,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC;gBAChC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC;gBACjC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACpC;YACD,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;gBAC9B,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC/B,cAAc,CAAC,YAAY,GAAG,GAAG,CAAC;gBAClC,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACnC;SACF;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YACrE,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;gBAChC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;gBACjC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC7C;QAED,MAAM,WAAW,GAAwB,EAAE,CAAC;QAC5C,WAAW,CAAC,QAAQ,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnF,WAAW,CAAC,SAAS,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,IAAI,QAAQ,KAAK,SAAS;YACxB,WAAW,CAAC,QAAQ,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrF,IAAI,SAAS,KAAK,SAAS;YACzB,WAAW,CAAC,SAAS,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,aAAa,GAAoB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,6BAAK,SAAS,EAAE,qBAAqB,IAAG,OAAO,CAAO,CAAC,CAAC;QAEhI,MAAM,QAAQ,GAAwB;YACpC,GAAG,eAAe;YAClB,GAAG,KAAK;SACT,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAI,CAC9B,6BACE,SAAS,EAAE,IAAA,oBAAU,EACnB,kBAAkB,EAClB,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAClC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAC/B,iBACW,kBAAkB,EAC9B,aAAa,EAAE,IAAI,CAAC,gBAAgB;YACpC,6BAAK,SAAS,EAAE,mBAAmB,iBAAc,mBAAmB,EAAC,KAAK,EAAE,UAAU,IAAG,KAAK,CAAO;YACrG,gCACE,SAAS,EAAE,uDAAuD,iBACtD,mBAAmB,EAC/B,OAAO,EAAE,OAAO;gBAChB,oBAAC,oBAAI,IAAC,QAAQ,EAAE,oBAAC,8BAAQ,OAAG,GAAI,CACzB,CACL,CACP,CAAC;QAEF,OAAO,CACL,6BAAK,GAAG,EAAE,IAAI,CAAC,YAAY,EACzB,SAAS,EAAE,IAAA,oBAAU,EACnB,aAAa,EACb,CAAC,KAAK,IAAI,oBAAoB,EAC9B,MAAM,IAAI,oBAAoB,EAC9B,SAAS,CACV,EACD,KAAK,EAAE,QAAQ,iBACH,kBAAkB,KAC1B,KAAK,IAER,MAAM;YACL,oBAAC,yCAAmB,IAAC,cAAc,EAAE,cAAc;gBACjD,oBAAC,qBAAS,IAAC,MAAM,EAAE,SAAS,IAAI,KAAK,EAAE,uBAAuB,EAAE,IAAI;oBAClE,6BACE,SAAS,EAAE,IAAA,oBAAU,EAAC,uBAAuB,EAAE,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,EAC5F,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE,iBAChC,uBAAuB,EACnC,aAAa,EAAE,IAAI,CAAC,2BAA2B;wBAE/C,6BAAK,SAAS,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW;4BAC5E,CAAC,UAAU;gCACV,aAAa;4BAEf,6BACE,SAAS,EAAE,IAAA,oBAAU,EACnB,qBAAqB,EACrB,EAAE,8BAA8B,EAAE,CAAC,KAAK,EAAE,EAC1C,gBAAgB,CAAC,EACnB,KAAK,EAAE,YAAY,IAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChB;4BACL,aAAa;gCACZ,6BAAK,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,IACrD,aAAa,CACV;4BAER,6BACE,SAAS,EAAE,IAAA,oBAAU,EAAC,kBAAkB,EAAE,wBAAwB,EAAE,EAAE,0BAA0B,EAAE,SAAS,EAAE,CAAC,iBAClG,wBAAwB,EACpC,aAAa,EAAE,IAAI,CAAC,uBAAuB,GAC3C;4BACF,6BACE,SAAS,EAAE,IAAA,oBAAU,EAAC,kBAAkB,EAAE,6BAA6B,EAAE,EAAE,0BAA0B,EAAE,SAAS,EAAE,CAAC,iBACvG,yBAAyB,EACrC,aAAa,EAAE,IAAI,CAAC,sBAAsB,GAC1C;4BACF,6BACE,SAAS,EAAE,IAAA,oBAAU,EAAC,kBAAkB,EAAE,+BAA+B,EAAE,EAAE,0BAA0B,EAAE,SAAS,EAAE,CAAC,iBACzG,+BAA+B,EAC3C,aAAa,EAAE,IAAI,CAAC,2BAA2B,GAC/C,CACE,CACF,CACI,CACQ,CAEpB,CACP,CAAC;IACJ,CAAC;IAEO,4BAA4B,CAAC,SAA2B;QAC9D,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,sEAAsE;QACtE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;YACxB,OAAO,EAAE,CAAC;QAEZ,uBAAuB;QACvB,IAAI,CAAC,SAAS;YACZ,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC;QAErC,QAAQ,SAAS,EAAE;YACjB,KAAK,eAAe,CAAC,OAAO;gBAC1B,SAAS,GAAG,sBAAsB,CAAC;gBACnC,MAAM;YACR,KAAK,eAAe,CAAC,GAAG;gBACtB,SAAS,GAAG,iBAAiB,CAAC;gBAC9B,MAAM;YACR,KAAK,eAAe,CAAC,QAAQ;gBAC3B,SAAS,GAAG,uBAAuB,CAAC;gBACpC,MAAM;YACR,KAAK,eAAe,CAAC,IAAI;gBACvB,SAAS,GAAG,kBAAkB,CAAC;gBAC/B,MAAM;YACR,KAAK,eAAe,CAAC,MAAM;gBACzB,SAAS,GAAG,oBAAoB,CAAC;gBACjC,MAAM;YACR,KAAK,eAAe,CAAC,KAAK;gBACxB,SAAS,GAAG,mBAAmB,CAAC;gBAChC,MAAM;YACR,KAAK,eAAe,CAAC,UAAU;gBAC7B,SAAS,GAAG,yBAAyB,CAAC;gBACtC,MAAM;YACR,KAAK,eAAe,CAAC,MAAM;gBACzB,SAAS,GAAG,oBAAoB,CAAC;gBACjC,MAAM;YACR,KAAK,eAAe,CAAC,WAAW;gBAC9B,SAAS,GAAG,0BAA0B,CAAC;gBACvC,MAAM;SACT;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,KAAkB;QACzC,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,aAAa,EAAE;YACvB,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAuB,EAAE,KAAa,EAAE,EAAE;gBACrE,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,WAAW,GAAG,IAAA,oBAAU,EAAC,oBAAoB,EAAE,iBAAiB,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBACrG,IAAI,SAA2E,CAAC;gBAEhF,QAAQ,MAAM,CAAC,IAAI,EAAE;oBACnB,KAAK,iCAAgB,CAAC,EAAE;wBACtB,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;wBAC3C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,KAAK,iCAAgB,CAAC,KAAK;wBACzB,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;wBAC9C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,KAAK,iCAAgB,CAAC,GAAG;wBACvB,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;wBAC5C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,KAAK,iCAAgB,CAAC,EAAE;wBACtB,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;wBAC3C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,MAAM;oBACR,KAAK,iCAAgB,CAAC,MAAM;wBAC1B,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;wBAC/C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,MAAM;oBACR,KAAK,iCAAgB,CAAC,KAAK;wBACzB,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;wBAC9C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,MAAM;oBACR,KAAK,iCAAgB,CAAC,IAAI;wBACxB,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;wBAC7C,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,KAAK,iCAAgB,CAAC,QAAQ;wBAC5B,UAAU,GAAG,eAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACjD,WAAW,GAAG,IAAA,oBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1D,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;iBACT;gBAED,IAAI,MAAM,CAAC,KAAK;oBAAE,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5C,OAAO,CAAC,IAAI,CACV,oBAAC,sBAAM,IACL,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,EACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAEtB,UAAU,CACJ,CACV,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;;AA/Ta,mBAAY,GAAyB;IACjD,SAAS,EAAE,eAAe,CAAC,MAAM;IACjC,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;CACjB,AAXyB,CAWxB;AAdS,wBAAM","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Dialog\r\n */\r\n\r\nimport \"./Dialog.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { DialogButtonDef, DialogButtonType, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { DivWithOutsideClick } from \"../base/DivWithOutsideClick\";\r\nimport { UiCore } from \"../UiCore\";\r\nimport { CommonProps } from \"../utils/Props\";\r\nimport { Omit } from \"../utils/typeUtils\";\r\nimport { FocusTrap } from \"../focustrap/FocusTrap\";\r\nimport { Button } from \"@itwin/itwinui-react\";\r\nimport { Icon } from \"../icons/IconComponent\";\r\nimport { SvgClose } from \"@itwin/itwinui-icons-react\";\r\n\r\n// cspell:ignore focustrap\r\n\r\n/** Enum for dialog alignment\r\n * @public\r\n */\r\nexport enum DialogAlignment {\r\n TopLeft = \"top-left\", Top = \"top\", TopRight = \"top-right\",\r\n Left = \"left\", Center = \"center\", Right = \"right\",\r\n BottomLeft = \"bottom-left\", Bottom = \"bottom\", BottomRight = \"bottom-right\",\r\n}\r\n\r\n/** Properties for the [[Dialog]] component\r\n * @public\r\n */\r\nexport interface DialogProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"title\">, CommonProps {\r\n /** Indicates whether to show dialog or not */\r\n opened: boolean;\r\n\r\n /** Indicates whether the user can resize dialog with cursor. Default: false */\r\n resizable?: boolean;\r\n /** Indicates whether the user can move dialog with cursor. Default: false */\r\n movable?: boolean;\r\n /** Indicates whether the content should be inset. Default: true */\r\n inset?: boolean;\r\n /** Indicates whether the focus should be trapped within the dialog. Default: false */\r\n trapFocus?: boolean;\r\n\r\n /** Whether the hide the header. Default: false */\r\n hideHeader?: boolean;\r\n /** Override for the header */\r\n header?: React.ReactNode;\r\n /** Title to show in title bar of dialog */\r\n title?: string | JSX.Element;\r\n /** Footer to show at bottom of dialog. Note: will override buttonCluster */\r\n footer?: string | JSX.Element;\r\n /** List of DialogButtonDef objects specifying buttons and associated onClick events */\r\n buttonCluster?: DialogButtonDef[];\r\n\r\n /** Default alignment of dialog. Default: DialogAlignment.Center */\r\n alignment?: DialogAlignment;\r\n /** Initial x/left position of dialog in px. */\r\n x?: number;\r\n /** Initial y/top position of dialog in px. */\r\n y?: number;\r\n\r\n /** onClick event for X button for dialog */\r\n onClose?: () => void;\r\n /** 'keyup' event for Esc key */\r\n onEscape?: () => void;\r\n /** Triggered when a click is triggered outside of this dialog. */\r\n onOutsideClick?: (event: MouseEvent) => any;\r\n\r\n /** Initial width of dialog. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. Default: \"50%\" */\r\n width?: string | number;\r\n /** Initial height of dialog. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. */\r\n height?: string | number;\r\n /** Minimum width that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. Default: 300px */\r\n minWidth?: string | number;\r\n /** Minimum height that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. Default: 100px */\r\n minHeight?: string | number;\r\n /** Maximum width that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. */\r\n maxWidth?: string | number;\r\n /** Maximum height that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. */\r\n maxHeight?: string | number;\r\n\r\n /** Whether to show background overlay. Default: true.\r\n * @note Modeless dialogs require an id and an implementation of onModelessPointerDown.\r\n */\r\n modal?: boolean;\r\n /** An id for a modeless dialog */\r\n modelessId?: string;\r\n /** Pointer Down event handler when modeless (modal = false) */\r\n onModelessPointerDown?: (event: React.PointerEvent, id: string) => void;\r\n\r\n /** Custom CSS Style for overlay */\r\n backgroundStyle?: React.CSSProperties;\r\n /** Custom CSS Style for title */\r\n titleStyle?: React.CSSProperties;\r\n /** Custom CSS Style for footer */\r\n footerStyle?: React.CSSProperties;\r\n /** Custom CSS class name for the content */\r\n contentClassName?: string;\r\n /** Custom CSS Style for the content */\r\n contentStyle?: React.CSSProperties;\r\n}\r\n\r\n/** @internal */\r\ninterface DialogState {\r\n rightResizing: boolean;\r\n downResizing: boolean;\r\n moving: boolean;\r\n grabOffsetX: number;\r\n grabOffsetY: number;\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n height?: number;\r\n positionSet: boolean;\r\n}\r\n\r\n/**\r\n * Dialog React component with optional resizing and dragging functionality\r\n * @public\r\n */\r\nexport class Dialog extends React.Component<DialogProps, DialogState> {\r\n private _parentDocument = document;\r\n private _containerRef = React.createRef<HTMLDivElement>();\r\n public static defaultProps: Partial<DialogProps> = {\r\n alignment: DialogAlignment.Center,\r\n minWidth: 300,\r\n minHeight: 100,\r\n width: \"50%\",\r\n hideHeader: false,\r\n resizable: false,\r\n movable: false,\r\n modal: true,\r\n inset: true,\r\n trapFocus: false,\r\n };\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<DialogState>;\r\n\r\n constructor(props: DialogProps) {\r\n super(props);\r\n this.state = {\r\n rightResizing: false,\r\n downResizing: false,\r\n moving: false,\r\n grabOffsetX: 0,\r\n grabOffsetY: 0,\r\n positionSet: props.x !== undefined || props.y !== undefined,\r\n };\r\n }\r\n\r\n private getParentWindow() {\r\n // istanbul ignore next\r\n return this._parentDocument.defaultView ?? window;\r\n }\r\n\r\n public override componentWillUnmount(): void {\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.removeEventListener(\"pointerup\", this._handlePointerUp, true);\r\n parentWindow.removeEventListener(\"pointermove\", this._handlePointerMove, true);\r\n this._parentDocument.removeEventListener(\"keyup\", this._handleKeyUp, true);\r\n parentWindow.addEventListener(\"resize\", this._handleAppWindowResize);\r\n }\r\n\r\n /** Keep title bar of movable Dialog at least partially visible */\r\n // istanbul ignore next\r\n private _handleAppWindowResize = (): void => {\r\n if (!this._containerRef.current || !this.props.movable)\r\n return;\r\n\r\n const parentWindow = this.getParentWindow();\r\n const { x, y } = this.state;\r\n let newX: number | undefined;\r\n let newY: number | undefined;\r\n\r\n if (undefined !== y && undefined !== x) {\r\n if (y > parentWindow.innerHeight - 32)\r\n newY = parentWindow.innerHeight - 32;\r\n if (x > parentWindow.innerWidth - 32)\r\n newX = parentWindow.innerWidth - 32;\r\n }\r\n\r\n if (newX !== undefined || newY !== undefined)\r\n this.setState({ x: newX !== undefined ? newX : x, y: newY !== undefined ? newY : y, positionSet: true });\r\n };\r\n\r\n public override componentDidMount(): void {\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.addEventListener(\"pointerup\", this._handlePointerUp, true);\r\n this._parentDocument.addEventListener(\"keyup\", this._handleKeyUp, true);\r\n parentWindow.addEventListener(\"resize\", this._handleAppWindowResize);\r\n }\r\n\r\n public handleRefSet = (containerDiv: HTMLDivElement | null) => {\r\n if (containerDiv)\r\n this._parentDocument = containerDiv.ownerDocument;\r\n };\r\n\r\n public override render(): JSX.Element {\r\n const {\r\n opened, title, footer, buttonCluster, onClose, onEscape, onOutsideClick, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n minWidth, minHeight, x, y, width, height, maxHeight, maxWidth,\r\n backgroundStyle, titleStyle, footerStyle, style, contentStyle, contentClassName,\r\n modal, resizable, movable, className, alignment, inset, trapFocus, modelessId, onModelessPointerDown, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n hideHeader, header, ...props } = this.props;\r\n\r\n const containerStyle: React.CSSProperties = {\r\n margin: \"\",\r\n left: x, top: y,\r\n width, height,\r\n };\r\n\r\n if (this.state.x !== undefined || this.state.y !== undefined) {\r\n // istanbul ignore else\r\n if (this.state.x !== undefined) {\r\n containerStyle.marginLeft = \"0\";\r\n containerStyle.marginRight = \"0\";\r\n containerStyle.left = this.state.x;\r\n }\r\n // istanbul ignore else\r\n if (this.state.y !== undefined) {\r\n containerStyle.marginTop = \"0\";\r\n containerStyle.marginBottom = \"0\";\r\n containerStyle.top = this.state.y;\r\n }\r\n }\r\n\r\n if (this.state.width !== undefined || this.state.height !== undefined) {\r\n // istanbul ignore else\r\n if (this.state.width !== undefined)\r\n containerStyle.width = this.state.width;\r\n // istanbul ignore else\r\n if (this.state.height !== undefined)\r\n containerStyle.height = this.state.height;\r\n }\r\n\r\n const minMaxStyle: React.CSSProperties = {};\r\n minMaxStyle.minWidth = (typeof minWidth === \"number\") ? `${minWidth}px` : minWidth;\r\n minMaxStyle.minHeight = (typeof minHeight === \"number\") ? `${minHeight}px` : minHeight;\r\n if (maxWidth !== undefined)\r\n minMaxStyle.maxWidth = (typeof maxWidth === \"number\") ? `${maxWidth}px` : maxWidth;\r\n if (maxHeight !== undefined)\r\n minMaxStyle.maxHeight = (typeof maxHeight === \"number\") ? `${maxHeight}px` : maxHeight;\r\n\r\n const buttons = this.getFooterButtons(this.props);\r\n\r\n const footerElement: React.ReactNode = footer || (buttons.length > 0 && <div className={\"core-dialog-buttons\"}>{buttons}</div>);\r\n\r\n const divStyle: React.CSSProperties = {\r\n ...backgroundStyle,\r\n ...style,\r\n };\r\n\r\n const headerElement = header || (\r\n <div\r\n className={classnames(\r\n \"core-dialog-head\",\r\n { \"core-dialog-movable\": movable },\r\n { \"core-dialog-modal\": modal }\r\n )}\r\n data-testid=\"core-dialog-head\"\r\n onPointerDown={this._handleStartMove}>\r\n <div className={\"core-dialog-title\"} data-testid=\"core-dialog-title\" style={titleStyle}>{title}</div>\r\n <button\r\n className={\"core-focus-trap-ignore-initial core-dialog-close icon\"}\r\n data-testid=\"core-dialog-close\"\r\n onClick={onClose}>\r\n <Icon iconSpec={<SvgClose />} />\r\n </button>\r\n </div>\r\n );\r\n\r\n return (\r\n <div ref={this.handleRefSet}\r\n className={classnames(\r\n \"core-dialog\",\r\n !modal && \"core-dialog-hidden\",\r\n opened && \"core-dialog-opened\",\r\n className,\r\n )}\r\n style={divStyle}\r\n data-testid=\"core-dialog-root\"\r\n {...props}\r\n >\r\n {opened &&\r\n <DivWithOutsideClick onOutsideClick={onOutsideClick}>\r\n <FocusTrap active={trapFocus && modal} returnFocusOnDeactivate={true}>\r\n <div\r\n className={classnames(\"core-dialog-container\", this.getCSSClassNameFromAlignment(alignment))}\r\n style={{ ...containerStyle, ...minMaxStyle }}\r\n data-testid=\"core-dialog-container\"\r\n onPointerDown={this._handleContainerPointerDown}\r\n >\r\n <div className={\"core-dialog-area\"} ref={this._containerRef} style={minMaxStyle}>\r\n {!hideHeader &&\r\n headerElement\r\n }\r\n <div\r\n className={classnames(\r\n \"core-dialog-content\",\r\n { \"core-dialog-content-no-inset\": !inset },\r\n contentClassName)}\r\n style={contentStyle}>\r\n {this.props.children}\r\n </div>\r\n {footerElement &&\r\n <div className={\"core-dialog-footer\"} style={footerStyle}>\r\n {footerElement}\r\n </div>\r\n }\r\n <div\r\n className={classnames(\"core-dialog-drag\", \"core-dialog-drag-right\", { \"core-dialog-drag-enabled\": resizable })}\r\n data-testid=\"core-dialog-drag-right\"\r\n onPointerDown={this._handleStartResizeRight}\r\n />\r\n <div\r\n className={classnames(\"core-dialog-drag\", \"core-dialog-drag-bottom-mid\", { \"core-dialog-drag-enabled\": resizable })}\r\n data-testid=\"core-dialog-drag-bottom\"\r\n onPointerDown={this._handleStartResizeDown}\r\n />\r\n <div\r\n className={classnames(\"core-dialog-drag\", \"core-dialog-drag-bottom-right\", { \"core-dialog-drag-enabled\": resizable })}\r\n data-testid=\"core-dialog-drag-bottom-right\"\r\n onPointerDown={this._handleStartResizeDownRight}\r\n />\r\n </div>\r\n </div>\r\n </FocusTrap>\r\n </DivWithOutsideClick>\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n private getCSSClassNameFromAlignment(alignment?: DialogAlignment): string {\r\n let className = \"\";\r\n\r\n // Drop the alignment CSS class if the Dialog has been sized or moved.\r\n if (this.state.positionSet)\r\n return \"\";\r\n\r\n // istanbul ignore next\r\n if (!alignment)\r\n alignment = DialogAlignment.Center;\r\n\r\n switch (alignment) {\r\n case DialogAlignment.TopLeft:\r\n className = \"core-dialog-top-left\";\r\n break;\r\n case DialogAlignment.Top:\r\n className = \"core-dialog-top\";\r\n break;\r\n case DialogAlignment.TopRight:\r\n className = \"core-dialog-top-right\";\r\n break;\r\n case DialogAlignment.Left:\r\n className = \"core-dialog-left\";\r\n break;\r\n case DialogAlignment.Center:\r\n className = \"core-dialog-center\";\r\n break;\r\n case DialogAlignment.Right:\r\n className = \"core-dialog-right\";\r\n break;\r\n case DialogAlignment.BottomLeft:\r\n className = \"core-dialog-bottom-left\";\r\n break;\r\n case DialogAlignment.Bottom:\r\n className = \"core-dialog-bottom\";\r\n break;\r\n case DialogAlignment.BottomRight:\r\n className = \"core-dialog-bottom-right\";\r\n break;\r\n }\r\n\r\n return className;\r\n }\r\n\r\n private getFooterButtons(props: DialogProps) {\r\n const buttons: React.ReactNode[] = [];\r\n if (props.buttonCluster) {\r\n props.buttonCluster.forEach((button: DialogButtonDef, index: number) => {\r\n let buttonText = \"\";\r\n let buttonClass = classnames(\"core-dialog-button\", `dialog-button-${button.type}`, button.className);\r\n let styleType: \"default\" | \"cta\" | \"high-visibility\" | \"borderless\" | undefined;\r\n\r\n switch (button.type) {\r\n case DialogButtonType.OK:\r\n buttonText = UiCore.translate(\"dialog.ok\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n styleType = \"cta\";\r\n break;\r\n case DialogButtonType.Retry:\r\n buttonText = UiCore.translate(\"dialog.retry\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n styleType = \"cta\";\r\n break;\r\n case DialogButtonType.Yes:\r\n buttonText = UiCore.translate(\"dialog.yes\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n styleType = \"cta\";\r\n break;\r\n case DialogButtonType.No:\r\n buttonText = UiCore.translate(\"dialog.no\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n break;\r\n case DialogButtonType.Cancel:\r\n buttonText = UiCore.translate(\"dialog.cancel\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n break;\r\n case DialogButtonType.Close:\r\n buttonText = UiCore.translate(\"dialog.close\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n break;\r\n case DialogButtonType.Next:\r\n buttonText = UiCore.translate(\"dialog.next\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n styleType = \"cta\";\r\n break;\r\n case DialogButtonType.Previous:\r\n buttonText = UiCore.translate(\"dialog.previous\");\r\n buttonClass = classnames(buttonClass, button.buttonStyle);\r\n styleType = \"cta\";\r\n break;\r\n }\r\n\r\n if (button.label) buttonText = button.label;\r\n\r\n buttons.push(\r\n <Button\r\n className={buttonClass}\r\n disabled={button.disabled}\r\n styleType={styleType}\r\n key={index.toString()}\r\n onClick={button.onClick}\r\n >\r\n {buttonText}\r\n </Button>\r\n );\r\n });\r\n }\r\n return buttons;\r\n }\r\n\r\n private _handleKeyUp = (event: KeyboardEvent) => {\r\n if (event.key === SpecialKey.Escape && this.props.opened && this.props.onEscape) {\r\n this.props.onEscape();\r\n }\r\n };\r\n\r\n private _handleContainerPointerDown = (event: React.PointerEvent): void => {\r\n if (!this.props.modal) {\r\n if (this.props.onModelessPointerDown && this.props.modelessId)\r\n this.props.onModelessPointerDown(event, this.props.modelessId);\r\n }\r\n };\r\n\r\n private _handleStartResizeRight = (event: React.PointerEvent): void => {\r\n event.preventDefault();\r\n this.setState({ rightResizing: true });\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\r\n };\r\n\r\n private _handleStartResizeDown = (event: React.PointerEvent): void => {\r\n event.preventDefault();\r\n this.setState({ downResizing: true });\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\r\n };\r\n\r\n private _handleStartResizeDownRight = (event: React.PointerEvent): void => {\r\n event.preventDefault();\r\n this.setState({ downResizing: true, rightResizing: true });\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\r\n };\r\n\r\n private _handleStartMove = (event: React.PointerEvent): void => {\r\n if (!this.props.movable)\r\n return;\r\n\r\n event.preventDefault();\r\n // istanbul ignore else\r\n if (this._containerRef.current) {\r\n const rect = this._containerRef.current.getBoundingClientRect();\r\n const grabOffsetX = event.clientX - rect.left;\r\n const grabOffsetY = event.clientY - rect.top;\r\n this.setState({\r\n grabOffsetX,\r\n grabOffsetY,\r\n moving: true,\r\n });\r\n\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\r\n }\r\n };\r\n\r\n private _handlePointerMove = (event: PointerEvent): void => {\r\n if ((!this.props.resizable && !this.props.movable) || !this._containerRef.current)\r\n return;\r\n\r\n const { minWidth, maxWidth, minHeight, maxHeight, movable } = this.props;\r\n let { x, y, width, height } = this.state;\r\n\r\n // istanbul ignore else\r\n if (x === undefined) { // if x is undefined, so is y, width, and height\r\n const rect = this._containerRef.current.getBoundingClientRect();\r\n width = rect.width, height = rect.height, x = rect.left, y = rect.top;\r\n }\r\n\r\n if (this.props.resizable) {\r\n if (this.state.rightResizing) {\r\n const pointerX = event.clientX;\r\n width = pointerX - x;\r\n // istanbul ignore else\r\n if (typeof minWidth === \"number\")\r\n width = Math.max(width, minWidth);\r\n if (maxWidth !== undefined && typeof maxWidth === \"number\")\r\n width = Math.min(width, maxWidth);\r\n }\r\n\r\n if (this.state.downResizing) {\r\n const pointerY = event.clientY;\r\n height = pointerY - y!;\r\n // istanbul ignore else\r\n if (typeof minHeight === \"number\")\r\n height = Math.max(height, minHeight);\r\n if (maxHeight !== undefined && typeof maxHeight === \"number\")\r\n height = Math.min(height, maxHeight);\r\n }\r\n\r\n this.setState({ width, height });\r\n }\r\n\r\n // istanbul ignore next\r\n if (movable && this.state.moving) {\r\n x = event.clientX - this.state.grabOffsetX;\r\n y = event.clientY - this.state.grabOffsetY;\r\n if (y < 0)\r\n y = 0;\r\n if (event.view) {\r\n if (y > event.view.innerHeight - 32)\r\n y = event.view.innerHeight - 32;\r\n if (x > event.view.innerWidth - 32)\r\n x = event.view.innerWidth - 32;\r\n if (width) {\r\n if (x < (0 - width + 32))\r\n x = 0 - width + 32;\r\n }\r\n }\r\n\r\n this.setState({ x, y, positionSet: true });\r\n }\r\n };\r\n\r\n private _handlePointerUp = (_event: PointerEvent): void => {\r\n if (!this.props.movable && !this.props.resizable)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (this._containerRef.current) {\r\n this.setState({\r\n rightResizing: false,\r\n downResizing: false,\r\n moving: false,\r\n grabOffsetX: 0,\r\n grabOffsetY: 0,\r\n });\r\n }\r\n\r\n const parentWindow = this.getParentWindow();\r\n parentWindow.removeEventListener(\"pointermove\", this._handlePointerMove, true);\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/core-react/dialog/Dialog.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 Dialog\n */\n\nimport \"./Dialog.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { DialogButtonDef, DialogButtonType, SpecialKey } from \"@itwin/appui-abstract\";\nimport { DivWithOutsideClick } from \"../base/DivWithOutsideClick\";\nimport { UiCore } from \"../UiCore\";\nimport { CommonProps } from \"../utils/Props\";\nimport { Omit } from \"../utils/typeUtils\";\nimport { FocusTrap } from \"../focustrap/FocusTrap\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { Icon } from \"../icons/IconComponent\";\nimport { SvgClose } from \"@itwin/itwinui-icons-react\";\n\n// cspell:ignore focustrap\n\n/** Enum for dialog alignment\n * @public\n */\nexport enum DialogAlignment {\n TopLeft = \"top-left\", Top = \"top\", TopRight = \"top-right\",\n Left = \"left\", Center = \"center\", Right = \"right\",\n BottomLeft = \"bottom-left\", Bottom = \"bottom\", BottomRight = \"bottom-right\",\n}\n\n/** Properties for the [[Dialog]] component\n * @public\n */\nexport interface DialogProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"title\">, CommonProps {\n /** Indicates whether to show dialog or not */\n opened: boolean;\n\n /** Indicates whether the user can resize dialog with cursor. Default: false */\n resizable?: boolean;\n /** Indicates whether the user can move dialog with cursor. Default: false */\n movable?: boolean;\n /** Indicates whether the content should be inset. Default: true */\n inset?: boolean;\n /** Indicates whether the focus should be trapped within the dialog. Default: false */\n trapFocus?: boolean;\n\n /** Whether the hide the header. Default: false */\n hideHeader?: boolean;\n /** Override for the header */\n header?: React.ReactNode;\n /** Title to show in title bar of dialog */\n title?: string | JSX.Element;\n /** Footer to show at bottom of dialog. Note: will override buttonCluster */\n footer?: string | JSX.Element;\n /** List of DialogButtonDef objects specifying buttons and associated onClick events */\n buttonCluster?: DialogButtonDef[];\n\n /** Default alignment of dialog. Default: DialogAlignment.Center */\n alignment?: DialogAlignment;\n /** Initial x/left position of dialog in px. */\n x?: number;\n /** Initial y/top position of dialog in px. */\n y?: number;\n\n /** onClick event for X button for dialog */\n onClose?: () => void;\n /** 'keyup' event for Esc key */\n onEscape?: () => void;\n /** Triggered when a click is triggered outside of this dialog. */\n onOutsideClick?: (event: MouseEvent) => any;\n\n /** Initial width of dialog. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. Default: \"50%\" */\n width?: string | number;\n /** Initial height of dialog. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. */\n height?: string | number;\n /** Minimum width that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. Default: 300px */\n minWidth?: string | number;\n /** Minimum height that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. Default: 100px */\n minHeight?: string | number;\n /** Maximum width that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. */\n maxWidth?: string | number;\n /** Maximum height that the dialog may be resized to. Displayed in px if value is a number; otherwise, displayed in specified CSS unit. */\n maxHeight?: string | number;\n\n /** Whether to show background overlay. Default: true.\n * @note Modeless dialogs require an id and an implementation of onModelessPointerDown.\n */\n modal?: boolean;\n /** An id for a modeless dialog */\n modelessId?: string;\n /** Pointer Down event handler when modeless (modal = false) */\n onModelessPointerDown?: (event: React.PointerEvent, id: string) => void;\n\n /** Custom CSS Style for overlay */\n backgroundStyle?: React.CSSProperties;\n /** Custom CSS Style for title */\n titleStyle?: React.CSSProperties;\n /** Custom CSS Style for footer */\n footerStyle?: React.CSSProperties;\n /** Custom CSS class name for the content */\n contentClassName?: string;\n /** Custom CSS Style for the content */\n contentStyle?: React.CSSProperties;\n}\n\n/** @internal */\ninterface DialogState {\n rightResizing: boolean;\n downResizing: boolean;\n moving: boolean;\n grabOffsetX: number;\n grabOffsetY: number;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n positionSet: boolean;\n}\n\n/**\n * Dialog React component with optional resizing and dragging functionality\n * @public\n */\nexport class Dialog extends React.Component<DialogProps, DialogState> {\n private _parentDocument = document;\n private _containerRef = React.createRef<HTMLDivElement>();\n public static defaultProps: Partial<DialogProps> = {\n alignment: DialogAlignment.Center,\n minWidth: 300,\n minHeight: 100,\n width: \"50%\",\n hideHeader: false,\n resizable: false,\n movable: false,\n modal: true,\n inset: true,\n trapFocus: false,\n };\n\n /** @internal */\n public override readonly state: Readonly<DialogState>;\n\n constructor(props: DialogProps) {\n super(props);\n this.state = {\n rightResizing: false,\n downResizing: false,\n moving: false,\n grabOffsetX: 0,\n grabOffsetY: 0,\n positionSet: props.x !== undefined || props.y !== undefined,\n };\n }\n\n private getParentWindow() {\n // istanbul ignore next\n return this._parentDocument.defaultView ?? window;\n }\n\n public override componentWillUnmount(): void {\n const parentWindow = this.getParentWindow();\n parentWindow.removeEventListener(\"pointerup\", this._handlePointerUp, true);\n parentWindow.removeEventListener(\"pointermove\", this._handlePointerMove, true);\n this._parentDocument.removeEventListener(\"keyup\", this._handleKeyUp, true);\n parentWindow.addEventListener(\"resize\", this._handleAppWindowResize);\n }\n\n /** Keep title bar of movable Dialog at least partially visible */\n // istanbul ignore next\n private _handleAppWindowResize = (): void => {\n if (!this._containerRef.current || !this.props.movable)\n return;\n\n const parentWindow = this.getParentWindow();\n const { x, y } = this.state;\n let newX: number | undefined;\n let newY: number | undefined;\n\n if (undefined !== y && undefined !== x) {\n if (y > parentWindow.innerHeight - 32)\n newY = parentWindow.innerHeight - 32;\n if (x > parentWindow.innerWidth - 32)\n newX = parentWindow.innerWidth - 32;\n }\n\n if (newX !== undefined || newY !== undefined)\n this.setState({ x: newX !== undefined ? newX : x, y: newY !== undefined ? newY : y, positionSet: true });\n };\n\n public override componentDidMount(): void {\n const parentWindow = this.getParentWindow();\n parentWindow.addEventListener(\"pointerup\", this._handlePointerUp, true);\n this._parentDocument.addEventListener(\"keyup\", this._handleKeyUp, true);\n parentWindow.addEventListener(\"resize\", this._handleAppWindowResize);\n }\n\n public handleRefSet = (containerDiv: HTMLDivElement | null) => {\n if (containerDiv)\n this._parentDocument = containerDiv.ownerDocument;\n };\n\n public override render(): JSX.Element {\n const {\n opened, title, footer, buttonCluster, onClose, onEscape, onOutsideClick, // eslint-disable-line @typescript-eslint/no-unused-vars\n minWidth, minHeight, x, y, width, height, maxHeight, maxWidth,\n backgroundStyle, titleStyle, footerStyle, style, contentStyle, contentClassName,\n modal, resizable, movable, className, alignment, inset, trapFocus, modelessId, onModelessPointerDown, // eslint-disable-line @typescript-eslint/no-unused-vars\n hideHeader, header, ...props } = this.props;\n\n const containerStyle: React.CSSProperties = {\n margin: \"\",\n left: x, top: y,\n width, height,\n };\n\n if (this.state.x !== undefined || this.state.y !== undefined) {\n // istanbul ignore else\n if (this.state.x !== undefined) {\n containerStyle.marginLeft = \"0\";\n containerStyle.marginRight = \"0\";\n containerStyle.left = this.state.x;\n }\n // istanbul ignore else\n if (this.state.y !== undefined) {\n containerStyle.marginTop = \"0\";\n containerStyle.marginBottom = \"0\";\n containerStyle.top = this.state.y;\n }\n }\n\n if (this.state.width !== undefined || this.state.height !== undefined) {\n // istanbul ignore else\n if (this.state.width !== undefined)\n containerStyle.width = this.state.width;\n // istanbul ignore else\n if (this.state.height !== undefined)\n containerStyle.height = this.state.height;\n }\n\n const minMaxStyle: React.CSSProperties = {};\n minMaxStyle.minWidth = (typeof minWidth === \"number\") ? `${minWidth}px` : minWidth;\n minMaxStyle.minHeight = (typeof minHeight === \"number\") ? `${minHeight}px` : minHeight;\n if (maxWidth !== undefined)\n minMaxStyle.maxWidth = (typeof maxWidth === \"number\") ? `${maxWidth}px` : maxWidth;\n if (maxHeight !== undefined)\n minMaxStyle.maxHeight = (typeof maxHeight === \"number\") ? `${maxHeight}px` : maxHeight;\n\n const buttons = this.getFooterButtons(this.props);\n\n const footerElement: React.ReactNode = footer || (buttons.length > 0 && <div className={\"core-dialog-buttons\"}>{buttons}</div>);\n\n const divStyle: React.CSSProperties = {\n ...backgroundStyle,\n ...style,\n };\n\n const headerElement = header || (\n <div\n className={classnames(\n \"core-dialog-head\",\n { \"core-dialog-movable\": movable },\n { \"core-dialog-modal\": modal }\n )}\n data-testid=\"core-dialog-head\"\n onPointerDown={this._handleStartMove}>\n <div className={\"core-dialog-title\"} data-testid=\"core-dialog-title\" style={titleStyle}>{title}</div>\n <button\n className={\"core-focus-trap-ignore-initial core-dialog-close icon\"}\n data-testid=\"core-dialog-close\"\n onClick={onClose}>\n <Icon iconSpec={<SvgClose />} />\n </button>\n </div>\n );\n\n return (\n <div ref={this.handleRefSet}\n className={classnames(\n \"core-dialog\",\n !modal && \"core-dialog-hidden\",\n opened && \"core-dialog-opened\",\n className,\n )}\n style={divStyle}\n data-testid=\"core-dialog-root\"\n {...props}\n >\n {opened &&\n <DivWithOutsideClick onOutsideClick={onOutsideClick}>\n <FocusTrap active={trapFocus && modal} returnFocusOnDeactivate={true}>\n <div\n className={classnames(\"core-dialog-container\", this.getCSSClassNameFromAlignment(alignment))}\n style={{ ...containerStyle, ...minMaxStyle }}\n data-testid=\"core-dialog-container\"\n onPointerDown={this._handleContainerPointerDown}\n >\n <div className={\"core-dialog-area\"} ref={this._containerRef} style={minMaxStyle}>\n {!hideHeader &&\n headerElement\n }\n <div\n className={classnames(\n \"core-dialog-content\",\n { \"core-dialog-content-no-inset\": !inset },\n contentClassName)}\n style={contentStyle}>\n {this.props.children}\n </div>\n {footerElement &&\n <div className={\"core-dialog-footer\"} style={footerStyle}>\n {footerElement}\n </div>\n }\n <div\n className={classnames(\"core-dialog-drag\", \"core-dialog-drag-right\", { \"core-dialog-drag-enabled\": resizable })}\n data-testid=\"core-dialog-drag-right\"\n onPointerDown={this._handleStartResizeRight}\n />\n <div\n className={classnames(\"core-dialog-drag\", \"core-dialog-drag-bottom-mid\", { \"core-dialog-drag-enabled\": resizable })}\n data-testid=\"core-dialog-drag-bottom\"\n onPointerDown={this._handleStartResizeDown}\n />\n <div\n className={classnames(\"core-dialog-drag\", \"core-dialog-drag-bottom-right\", { \"core-dialog-drag-enabled\": resizable })}\n data-testid=\"core-dialog-drag-bottom-right\"\n onPointerDown={this._handleStartResizeDownRight}\n />\n </div>\n </div>\n </FocusTrap>\n </DivWithOutsideClick>\n }\n </div>\n );\n }\n\n private getCSSClassNameFromAlignment(alignment?: DialogAlignment): string {\n let className = \"\";\n\n // Drop the alignment CSS class if the Dialog has been sized or moved.\n if (this.state.positionSet)\n return \"\";\n\n // istanbul ignore next\n if (!alignment)\n alignment = DialogAlignment.Center;\n\n switch (alignment) {\n case DialogAlignment.TopLeft:\n className = \"core-dialog-top-left\";\n break;\n case DialogAlignment.Top:\n className = \"core-dialog-top\";\n break;\n case DialogAlignment.TopRight:\n className = \"core-dialog-top-right\";\n break;\n case DialogAlignment.Left:\n className = \"core-dialog-left\";\n break;\n case DialogAlignment.Center:\n className = \"core-dialog-center\";\n break;\n case DialogAlignment.Right:\n className = \"core-dialog-right\";\n break;\n case DialogAlignment.BottomLeft:\n className = \"core-dialog-bottom-left\";\n break;\n case DialogAlignment.Bottom:\n className = \"core-dialog-bottom\";\n break;\n case DialogAlignment.BottomRight:\n className = \"core-dialog-bottom-right\";\n break;\n }\n\n return className;\n }\n\n private getFooterButtons(props: DialogProps) {\n const buttons: React.ReactNode[] = [];\n if (props.buttonCluster) {\n props.buttonCluster.forEach((button: DialogButtonDef, index: number) => {\n let buttonText = \"\";\n let buttonClass = classnames(\"core-dialog-button\", `dialog-button-${button.type}`, button.className);\n let styleType: \"default\" | \"cta\" | \"high-visibility\" | \"borderless\" | undefined;\n\n switch (button.type) {\n case DialogButtonType.OK:\n buttonText = UiCore.translate(\"dialog.ok\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n styleType = \"cta\";\n break;\n case DialogButtonType.Retry:\n buttonText = UiCore.translate(\"dialog.retry\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n styleType = \"cta\";\n break;\n case DialogButtonType.Yes:\n buttonText = UiCore.translate(\"dialog.yes\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n styleType = \"cta\";\n break;\n case DialogButtonType.No:\n buttonText = UiCore.translate(\"dialog.no\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n break;\n case DialogButtonType.Cancel:\n buttonText = UiCore.translate(\"dialog.cancel\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n break;\n case DialogButtonType.Close:\n buttonText = UiCore.translate(\"dialog.close\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n break;\n case DialogButtonType.Next:\n buttonText = UiCore.translate(\"dialog.next\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n styleType = \"cta\";\n break;\n case DialogButtonType.Previous:\n buttonText = UiCore.translate(\"dialog.previous\");\n buttonClass = classnames(buttonClass, button.buttonStyle);\n styleType = \"cta\";\n break;\n }\n\n if (button.label) buttonText = button.label;\n\n buttons.push(\n <Button\n className={buttonClass}\n disabled={button.disabled}\n styleType={styleType}\n key={index.toString()}\n onClick={button.onClick}\n >\n {buttonText}\n </Button>\n );\n });\n }\n return buttons;\n }\n\n private _handleKeyUp = (event: KeyboardEvent) => {\n if (event.key === SpecialKey.Escape && this.props.opened && this.props.onEscape) {\n this.props.onEscape();\n }\n };\n\n private _handleContainerPointerDown = (event: React.PointerEvent): void => {\n if (!this.props.modal) {\n if (this.props.onModelessPointerDown && this.props.modelessId)\n this.props.onModelessPointerDown(event, this.props.modelessId);\n }\n };\n\n private _handleStartResizeRight = (event: React.PointerEvent): void => {\n event.preventDefault();\n this.setState({ rightResizing: true });\n const parentWindow = this.getParentWindow();\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\n };\n\n private _handleStartResizeDown = (event: React.PointerEvent): void => {\n event.preventDefault();\n this.setState({ downResizing: true });\n const parentWindow = this.getParentWindow();\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\n };\n\n private _handleStartResizeDownRight = (event: React.PointerEvent): void => {\n event.preventDefault();\n this.setState({ downResizing: true, rightResizing: true });\n const parentWindow = this.getParentWindow();\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\n };\n\n private _handleStartMove = (event: React.PointerEvent): void => {\n if (!this.props.movable)\n return;\n\n event.preventDefault();\n // istanbul ignore else\n if (this._containerRef.current) {\n const rect = this._containerRef.current.getBoundingClientRect();\n const grabOffsetX = event.clientX - rect.left;\n const grabOffsetY = event.clientY - rect.top;\n this.setState({\n grabOffsetX,\n grabOffsetY,\n moving: true,\n });\n\n const parentWindow = this.getParentWindow();\n parentWindow.addEventListener(\"pointermove\", this._handlePointerMove, true);\n }\n };\n\n private _handlePointerMove = (event: PointerEvent): void => {\n if ((!this.props.resizable && !this.props.movable) || !this._containerRef.current)\n return;\n\n const { minWidth, maxWidth, minHeight, maxHeight, movable } = this.props;\n let { x, y, width, height } = this.state;\n\n // istanbul ignore else\n if (x === undefined) { // if x is undefined, so is y, width, and height\n const rect = this._containerRef.current.getBoundingClientRect();\n width = rect.width, height = rect.height, x = rect.left, y = rect.top;\n }\n\n if (this.props.resizable) {\n if (this.state.rightResizing) {\n const pointerX = event.clientX;\n width = pointerX - x;\n // istanbul ignore else\n if (typeof minWidth === \"number\")\n width = Math.max(width, minWidth);\n if (maxWidth !== undefined && typeof maxWidth === \"number\")\n width = Math.min(width, maxWidth);\n }\n\n if (this.state.downResizing) {\n const pointerY = event.clientY;\n height = pointerY - y!;\n // istanbul ignore else\n if (typeof minHeight === \"number\")\n height = Math.max(height, minHeight);\n if (maxHeight !== undefined && typeof maxHeight === \"number\")\n height = Math.min(height, maxHeight);\n }\n\n this.setState({ width, height });\n }\n\n // istanbul ignore next\n if (movable && this.state.moving) {\n x = event.clientX - this.state.grabOffsetX;\n y = event.clientY - this.state.grabOffsetY;\n if (y < 0)\n y = 0;\n if (event.view) {\n if (y > event.view.innerHeight - 32)\n y = event.view.innerHeight - 32;\n if (x > event.view.innerWidth - 32)\n x = event.view.innerWidth - 32;\n if (width) {\n if (x < (0 - width + 32))\n x = 0 - width + 32;\n }\n }\n\n this.setState({ x, y, positionSet: true });\n }\n };\n\n private _handlePointerUp = (_event: PointerEvent): void => {\n if (!this.props.movable && !this.props.resizable)\n return;\n\n // istanbul ignore else\n if (this._containerRef.current) {\n this.setState({\n rightResizing: false,\n downResizing: false,\n moving: false,\n grabOffsetX: 0,\n grabOffsetY: 0,\n });\n }\n\n const parentWindow = this.getParentWindow();\n parentWindow.removeEventListener(\"pointermove\", this._handlePointerMove, true);\n };\n}\n"]}