@itwin/appui-react 4.0.0-dev.13 → 4.0.0-dev.15

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 (646) hide show
  1. package/CHANGELOG.md +154 -1
  2. package/README.md +2 -2
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/_variables.scss +11 -11
  5. package/lib/cjs/appui-react/accudraw/AccuDrawCommandItems.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.scss +14 -14
  8. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  9. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.scss +27 -27
  10. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  11. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.scss +55 -55
  12. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  13. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/AccuDrawUiSettings.js.map +1 -1
  15. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  17. package/lib/cjs/appui-react/accudraw/Calculator.scss +84 -84
  18. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  19. package/lib/cjs/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  20. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  21. package/lib/cjs/appui-react/accudraw/MenuButton.js.map +1 -1
  22. package/lib/cjs/appui-react/accudraw/MenuButton.scss +18 -18
  23. package/lib/cjs/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  24. package/lib/cjs/appui-react/accudraw/SquareButton.js.map +1 -1
  25. package/lib/cjs/appui-react/accudraw/SquareButton.scss +29 -29
  26. package/lib/cjs/appui-react/accudraw/backspace.svg +9 -9
  27. package/lib/cjs/appui-react/accudraw/constraint-2d.svg +11 -11
  28. package/lib/cjs/appui-react/accudraw/height-2.svg +10 -10
  29. package/lib/cjs/appui-react/accudraw/height.svg +11 -11
  30. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  31. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  32. package/lib/cjs/appui-react/backstage/BackstageItem.js.map +1 -1
  33. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  34. package/lib/cjs/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  35. package/lib/cjs/appui-react/backstage/BackstageManager.js.map +1 -1
  36. package/lib/cjs/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  37. package/lib/cjs/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  38. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  39. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  40. package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
  41. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +21 -21
  42. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  43. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.scss +14 -14
  44. package/lib/cjs/appui-react/childwindow/PopoutWidget.js.map +1 -1
  45. package/lib/cjs/appui-react/childwindow/PopoutWidget.scss +10 -10
  46. package/lib/cjs/appui-react/configurableui/ActivityTracker.js.map +1 -1
  47. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  48. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  49. package/lib/cjs/appui-react/configurableui/ConfigurableUiManager.js.map +1 -1
  50. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  51. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  52. package/lib/cjs/appui-react/configurableui/configurableui.scss +74 -74
  53. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  54. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  55. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  56. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  57. package/lib/cjs/appui-react/content/ContentLayout.scss +99 -99
  58. package/lib/cjs/appui-react/content/ContentLayoutManager.js.map +1 -1
  59. package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
  60. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  61. package/lib/cjs/appui-react/content/DefaultViewOverlay.scss +46 -46
  62. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  63. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  64. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  65. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  66. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  67. package/lib/cjs/appui-react/content/ViewStateHelper.js.map +1 -1
  68. package/lib/cjs/appui-react/content/ViewportContentControl.js.map +1 -1
  69. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -1
  70. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -1
  71. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  72. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  73. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  74. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  75. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.scss +34 -34
  76. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  77. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  78. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.scss +30 -30
  79. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  80. package/lib/cjs/appui-react/dialog/ContentDialog.scss +25 -25
  81. package/lib/cjs/appui-react/dialog/ContentDialogManager.js.map +1 -1
  82. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  83. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  84. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  85. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  86. package/lib/cjs/appui-react/dialog/ModalDialogManager.js.map +1 -1
  87. package/lib/cjs/appui-react/dialog/ModelessDialog.js.map +1 -1
  88. package/lib/cjs/appui-react/dialog/ModelessDialogManager.js.map +1 -1
  89. package/lib/cjs/appui-react/dialog/StandardMessageBox.js.map +1 -1
  90. package/lib/cjs/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  91. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  92. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  93. package/lib/cjs/appui-react/feedback/ValidationTextbox.scss +50 -50
  94. package/lib/cjs/appui-react/framework/FrameworkBackstage.js.map +1 -1
  95. package/lib/cjs/appui-react/framework/FrameworkChildWindows.js.map +1 -1
  96. package/lib/cjs/appui-react/framework/FrameworkContent.js.map +1 -1
  97. package/lib/cjs/appui-react/framework/FrameworkControls.js.map +1 -1
  98. package/lib/cjs/appui-react/framework/FrameworkDialogs.js.map +1 -1
  99. package/lib/cjs/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  100. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  101. package/lib/cjs/appui-react/framework/FrameworkToolSettings.js.map +1 -1
  102. package/lib/cjs/appui-react/framework/FrameworkVisibility.js.map +1 -1
  103. package/lib/cjs/appui-react/frontstage/FrontstageConfig.js.map +1 -1
  104. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  105. package/lib/cjs/appui-react/frontstage/FrontstageManager.js.map +1 -1
  106. package/lib/cjs/appui-react/frontstage/FrontstageProvider.js.map +1 -1
  107. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  108. package/lib/cjs/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  109. package/lib/cjs/appui-react/frontstage/ModalFrontstage.scss +80 -80
  110. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  111. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.scss +11 -11
  112. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  113. package/lib/cjs/appui-react/frontstage/StageUsage.js.map +1 -1
  114. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  115. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  116. package/lib/cjs/appui-react/hooks/useActiveStageId.js.map +1 -1
  117. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  118. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  119. package/lib/cjs/appui-react/hooks/useAvailableUiItemsProviders.js.map +1 -1
  120. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  121. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  122. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  123. package/lib/cjs/appui-react/hooks/useUiVisibility.js.map +1 -1
  124. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  125. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  126. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  127. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  128. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  129. package/lib/cjs/appui-react/messages/HollowIcon.js.map +1 -1
  130. package/lib/cjs/appui-react/messages/InputField.js.map +1 -1
  131. package/lib/cjs/appui-react/messages/InputField.scss +82 -82
  132. package/lib/cjs/appui-react/messages/MessageLabel.js.map +1 -1
  133. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  134. package/lib/cjs/appui-react/messages/MessageSpan.js.map +1 -1
  135. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  136. package/lib/cjs/appui-react/messages/Pointer.scss +42 -42
  137. package/lib/cjs/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  138. package/lib/cjs/appui-react/messages/StatusMessageManager.js.map +1 -1
  139. package/lib/cjs/appui-react/messages/getToastCategory.js.map +1 -1
  140. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  141. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  142. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  143. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  144. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +67 -67
  145. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  146. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.scss +72 -72
  147. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  148. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.scss +13 -13
  149. package/lib/cjs/appui-react/pickers/ListPicker.d.ts +3 -0
  150. package/lib/cjs/appui-react/pickers/ListPicker.d.ts.map +1 -1
  151. package/lib/cjs/appui-react/pickers/ListPicker.js +3 -1
  152. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  153. package/lib/cjs/appui-react/pickers/ListPicker.scss +306 -299
  154. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +6 -1
  155. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  156. package/lib/cjs/appui-react/pickers/ViewSelector.js +24 -9
  157. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  158. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  159. package/lib/cjs/appui-react/popup/CardPopup.scss +25 -25
  160. package/lib/cjs/appui-react/popup/HTMLElementPopup.js.map +1 -1
  161. package/lib/cjs/appui-react/popup/InputEditorPopup.js.map +1 -1
  162. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  163. package/lib/cjs/appui-react/popup/KeyinPalettePanel.scss +30 -30
  164. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  165. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  166. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  167. package/lib/cjs/appui-react/popup/PositionPopup.scss +28 -28
  168. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  169. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  170. package/lib/cjs/appui-react/redux/FrameworkState.js.map +1 -1
  171. package/lib/cjs/appui-react/redux/ReducerRegistry.js.map +1 -1
  172. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  173. package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
  174. package/lib/cjs/appui-react/redux/connectIModel.js.map +1 -1
  175. package/lib/cjs/appui-react/redux/redux-ts.js.map +1 -1
  176. package/lib/cjs/appui-react/safearea/SafeAreaContext.js.map +1 -1
  177. package/lib/cjs/appui-react/safearea/SafeAreaHelpers.js.map +1 -1
  178. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js.map +1 -1
  179. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  180. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  181. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  182. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.scss +119 -119
  183. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  184. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  185. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.scss +65 -65
  186. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  187. package/lib/cjs/appui-react/shared/AnyItemDef.js.map +1 -1
  188. package/lib/cjs/appui-react/shared/AnyToolbarItemDef.js.map +1 -1
  189. package/lib/cjs/appui-react/shared/CommandItemDef.js.map +1 -1
  190. package/lib/cjs/appui-react/shared/CustomItemDef.js.map +1 -1
  191. package/lib/cjs/appui-react/shared/CustomItemProps.js.map +1 -1
  192. package/lib/cjs/appui-react/shared/GroupItemProps.js.map +1 -1
  193. package/lib/cjs/appui-react/shared/ItemDefBase.js.map +1 -1
  194. package/lib/cjs/appui-react/shared/ItemMap.js.map +1 -1
  195. package/lib/cjs/appui-react/shared/ItemProps.js.map +1 -1
  196. package/lib/cjs/appui-react/shared/MenuItem.js.map +1 -1
  197. package/lib/cjs/appui-react/shared/SelectionScope.js.map +1 -1
  198. package/lib/cjs/appui-react/shared/ToolItemDef.js.map +1 -1
  199. package/lib/cjs/appui-react/stagepanels/StagePanelConfig.js.map +1 -1
  200. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  201. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js.map +1 -1
  202. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js.map +1 -1
  203. package/lib/cjs/appui-react/statusbar/Field.js.map +1 -1
  204. package/lib/cjs/appui-react/statusbar/Field.scss +109 -109
  205. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
  206. package/lib/cjs/appui-react/statusbar/LabelIndicator.js.map +1 -1
  207. package/lib/cjs/appui-react/statusbar/LabelIndicator.scss +43 -43
  208. package/lib/cjs/appui-react/statusbar/Overflow.js.map +1 -1
  209. package/lib/cjs/appui-react/statusbar/Overflow.scss +27 -27
  210. package/lib/cjs/appui-react/statusbar/OverflowPanel.js.map +1 -1
  211. package/lib/cjs/appui-react/statusbar/OverflowPanel.scss +22 -22
  212. package/lib/cjs/appui-react/statusbar/Popup.js.map +1 -1
  213. package/lib/cjs/appui-react/statusbar/Separator.js.map +1 -1
  214. package/lib/cjs/appui-react/statusbar/Separator.scss +12 -12
  215. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  216. package/lib/cjs/appui-react/statusbar/StatusBar.scss +41 -41
  217. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  218. package/lib/cjs/appui-react/statusbar/StatusBarItem.js.map +1 -1
  219. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  220. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  221. package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.js.map +1 -1
  222. package/lib/cjs/appui-react/statusbar/dialog/Button.js.map +1 -1
  223. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js.map +1 -1
  224. package/lib/cjs/appui-react/statusbar/dialog/TitleBar.js.map +1 -1
  225. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  226. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  227. package/lib/cjs/appui-react/statusfields/ActivityCenter.js.map +1 -1
  228. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  229. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  230. package/lib/cjs/appui-react/statusfields/SectionsField.scss +35 -35
  231. package/lib/cjs/appui-react/statusfields/SelectionInfo.js.map +1 -1
  232. package/lib/cjs/appui-react/statusfields/SelectionInfo.scss +14 -14
  233. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  234. package/lib/cjs/appui-react/statusfields/SelectionScope.scss +46 -46
  235. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  236. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  237. package/lib/cjs/appui-react/statusfields/ViewAttributes.scss +10 -10
  238. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  239. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +45 -45
  240. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  241. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +194 -194
  242. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  243. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  244. package/lib/cjs/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  245. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  246. package/lib/cjs/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  247. package/lib/cjs/appui-react/toolbar/DragInteraction.js.map +1 -1
  248. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  249. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  250. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  251. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  252. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  253. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  254. package/lib/cjs/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  255. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  256. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  257. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  258. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  259. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  260. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  261. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  262. package/lib/cjs/appui-react/tools/ToolSettingsTools.js.map +1 -1
  263. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  264. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  265. package/lib/cjs/appui-react/toolsettings/ToolInformation.js.map +1 -1
  266. package/lib/cjs/appui-react/toolsettings/ToolSettingsManager.js.map +1 -1
  267. package/lib/cjs/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  268. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  269. package/lib/cjs/appui-react/ui-items-provider/ProviderItem.js.map +1 -1
  270. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  271. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  272. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  273. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  274. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  275. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  276. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  277. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  278. package/lib/cjs/appui-react/ui-items-provider/isProviderItem.js.map +1 -1
  279. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  280. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  281. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.js.map +1 -1
  282. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.scss +212 -212
  283. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  284. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  285. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  286. package/lib/cjs/appui-react/utils/PropsHelper.js.map +1 -1
  287. package/lib/cjs/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  288. package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
  289. package/lib/cjs/appui-react/utils/ViewUtilities.js.map +1 -1
  290. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  291. package/lib/cjs/appui-react/widget-panels/FloatingWidget.js.map +1 -1
  292. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  293. package/lib/cjs/appui-react/widget-panels/Frontstage.scss +19 -19
  294. package/lib/cjs/appui-react/widget-panels/FrontstageContent.js.map +1 -1
  295. package/lib/cjs/appui-react/widget-panels/ModalFrontstageComposer.js.map +1 -1
  296. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  297. package/lib/cjs/appui-react/widget-panels/StatusBar.scss +10 -10
  298. package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
  299. package/lib/cjs/appui-react/widget-panels/Tab.scss +14 -14
  300. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  301. package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +41 -41
  302. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  303. package/lib/cjs/appui-react/widget-panels/Toolbars.scss +20 -20
  304. package/lib/cjs/appui-react/widget-panels/useTransientState.js.map +1 -1
  305. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  306. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  307. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  308. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  309. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  310. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  311. package/lib/cjs/appui-react/widgets/StableWidgetDef.js.map +1 -1
  312. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  313. package/lib/cjs/appui-react/widgets/ToolSettingsContent.js.map +1 -1
  314. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  315. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  316. package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
  317. package/lib/cjs/appui-react/widgets/WidgetConfig.js.map +1 -1
  318. package/lib/cjs/appui-react/widgets/WidgetControl.js.map +1 -1
  319. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  320. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  321. package/lib/cjs/appui-react/widgets/WidgetManager.js.map +1 -1
  322. package/lib/cjs/appui-react/widgets/WidgetState.js.map +1 -1
  323. package/lib/cjs/appui-react.js.map +1 -1
  324. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  325. package/lib/esm/appui-react/_variables.scss +11 -11
  326. package/lib/esm/appui-react/accudraw/AccuDrawCommandItems.js.map +1 -1
  327. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  328. package/lib/esm/appui-react/accudraw/AccuDrawDialog.scss +14 -14
  329. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  330. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.scss +27 -27
  331. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  332. package/lib/esm/appui-react/accudraw/AccuDrawInputField.scss +55 -55
  333. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  334. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  335. package/lib/esm/appui-react/accudraw/AccuDrawUiSettings.js.map +1 -1
  336. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  337. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  338. package/lib/esm/appui-react/accudraw/Calculator.scss +84 -84
  339. package/lib/esm/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  340. package/lib/esm/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  341. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  342. package/lib/esm/appui-react/accudraw/MenuButton.js.map +1 -1
  343. package/lib/esm/appui-react/accudraw/MenuButton.scss +18 -18
  344. package/lib/esm/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  345. package/lib/esm/appui-react/accudraw/SquareButton.js.map +1 -1
  346. package/lib/esm/appui-react/accudraw/SquareButton.scss +29 -29
  347. package/lib/esm/appui-react/accudraw/backspace.svg +9 -9
  348. package/lib/esm/appui-react/accudraw/constraint-2d.svg +11 -11
  349. package/lib/esm/appui-react/accudraw/height-2.svg +10 -10
  350. package/lib/esm/appui-react/accudraw/height.svg +11 -11
  351. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  352. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  353. package/lib/esm/appui-react/backstage/BackstageItem.js.map +1 -1
  354. package/lib/esm/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  355. package/lib/esm/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  356. package/lib/esm/appui-react/backstage/BackstageManager.js.map +1 -1
  357. package/lib/esm/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  358. package/lib/esm/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  359. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  360. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  361. package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
  362. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +21 -21
  363. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  364. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.scss +14 -14
  365. package/lib/esm/appui-react/childwindow/PopoutWidget.js.map +1 -1
  366. package/lib/esm/appui-react/childwindow/PopoutWidget.scss +10 -10
  367. package/lib/esm/appui-react/configurableui/ActivityTracker.js.map +1 -1
  368. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  369. package/lib/esm/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  370. package/lib/esm/appui-react/configurableui/ConfigurableUiManager.js.map +1 -1
  371. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  372. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  373. package/lib/esm/appui-react/configurableui/configurableui.scss +74 -74
  374. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  375. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  376. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  377. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  378. package/lib/esm/appui-react/content/ContentLayout.scss +99 -99
  379. package/lib/esm/appui-react/content/ContentLayoutManager.js.map +1 -1
  380. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  381. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  382. package/lib/esm/appui-react/content/DefaultViewOverlay.scss +46 -46
  383. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  384. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  385. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  386. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  387. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  388. package/lib/esm/appui-react/content/ViewStateHelper.js.map +1 -1
  389. package/lib/esm/appui-react/content/ViewportContentControl.js.map +1 -1
  390. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -1
  391. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -1
  392. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  393. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  394. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  395. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  396. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.scss +34 -34
  397. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  398. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  399. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.scss +30 -30
  400. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  401. package/lib/esm/appui-react/dialog/ContentDialog.scss +25 -25
  402. package/lib/esm/appui-react/dialog/ContentDialogManager.js.map +1 -1
  403. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  404. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  405. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  406. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  407. package/lib/esm/appui-react/dialog/ModalDialogManager.js.map +1 -1
  408. package/lib/esm/appui-react/dialog/ModelessDialog.js.map +1 -1
  409. package/lib/esm/appui-react/dialog/ModelessDialogManager.js.map +1 -1
  410. package/lib/esm/appui-react/dialog/StandardMessageBox.js.map +1 -1
  411. package/lib/esm/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  412. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  413. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  414. package/lib/esm/appui-react/feedback/ValidationTextbox.scss +50 -50
  415. package/lib/esm/appui-react/framework/FrameworkBackstage.js.map +1 -1
  416. package/lib/esm/appui-react/framework/FrameworkChildWindows.js.map +1 -1
  417. package/lib/esm/appui-react/framework/FrameworkContent.js.map +1 -1
  418. package/lib/esm/appui-react/framework/FrameworkControls.js.map +1 -1
  419. package/lib/esm/appui-react/framework/FrameworkDialogs.js.map +1 -1
  420. package/lib/esm/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  421. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  422. package/lib/esm/appui-react/framework/FrameworkToolSettings.js.map +1 -1
  423. package/lib/esm/appui-react/framework/FrameworkVisibility.js.map +1 -1
  424. package/lib/esm/appui-react/frontstage/FrontstageConfig.js.map +1 -1
  425. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  426. package/lib/esm/appui-react/frontstage/FrontstageManager.js.map +1 -1
  427. package/lib/esm/appui-react/frontstage/FrontstageProvider.js.map +1 -1
  428. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  429. package/lib/esm/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  430. package/lib/esm/appui-react/frontstage/ModalFrontstage.scss +80 -80
  431. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  432. package/lib/esm/appui-react/frontstage/ModalSettingsStage.scss +11 -11
  433. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  434. package/lib/esm/appui-react/frontstage/StageUsage.js.map +1 -1
  435. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  436. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  437. package/lib/esm/appui-react/hooks/useActiveStageId.js.map +1 -1
  438. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  439. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  440. package/lib/esm/appui-react/hooks/useAvailableUiItemsProviders.js.map +1 -1
  441. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  442. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  443. package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  444. package/lib/esm/appui-react/hooks/useUiVisibility.js.map +1 -1
  445. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  446. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  447. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  448. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  449. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  450. package/lib/esm/appui-react/messages/HollowIcon.js.map +1 -1
  451. package/lib/esm/appui-react/messages/InputField.js.map +1 -1
  452. package/lib/esm/appui-react/messages/InputField.scss +82 -82
  453. package/lib/esm/appui-react/messages/MessageLabel.js.map +1 -1
  454. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  455. package/lib/esm/appui-react/messages/MessageSpan.js.map +1 -1
  456. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  457. package/lib/esm/appui-react/messages/Pointer.scss +42 -42
  458. package/lib/esm/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  459. package/lib/esm/appui-react/messages/StatusMessageManager.js.map +1 -1
  460. package/lib/esm/appui-react/messages/getToastCategory.js.map +1 -1
  461. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  462. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  463. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  464. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  465. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +67 -67
  466. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  467. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.scss +72 -72
  468. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  469. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.scss +13 -13
  470. package/lib/esm/appui-react/pickers/ListPicker.d.ts +3 -0
  471. package/lib/esm/appui-react/pickers/ListPicker.d.ts.map +1 -1
  472. package/lib/esm/appui-react/pickers/ListPicker.js +4 -2
  473. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  474. package/lib/esm/appui-react/pickers/ListPicker.scss +306 -299
  475. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +6 -1
  476. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  477. package/lib/esm/appui-react/pickers/ViewSelector.js +24 -9
  478. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  479. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  480. package/lib/esm/appui-react/popup/CardPopup.scss +25 -25
  481. package/lib/esm/appui-react/popup/HTMLElementPopup.js.map +1 -1
  482. package/lib/esm/appui-react/popup/InputEditorPopup.js.map +1 -1
  483. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  484. package/lib/esm/appui-react/popup/KeyinPalettePanel.scss +30 -30
  485. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  486. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  487. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  488. package/lib/esm/appui-react/popup/PositionPopup.scss +28 -28
  489. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  490. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  491. package/lib/esm/appui-react/redux/FrameworkState.js.map +1 -1
  492. package/lib/esm/appui-react/redux/ReducerRegistry.js.map +1 -1
  493. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  494. package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
  495. package/lib/esm/appui-react/redux/connectIModel.js.map +1 -1
  496. package/lib/esm/appui-react/redux/redux-ts.js.map +1 -1
  497. package/lib/esm/appui-react/safearea/SafeAreaContext.js.map +1 -1
  498. package/lib/esm/appui-react/safearea/SafeAreaHelpers.js.map +1 -1
  499. package/lib/esm/appui-react/safearea/SafeAreaInsets.js.map +1 -1
  500. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  501. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  502. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  503. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.scss +119 -119
  504. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  505. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  506. package/lib/esm/appui-react/settings/ui/UiSettingsPage.scss +65 -65
  507. package/lib/esm/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  508. package/lib/esm/appui-react/shared/AnyItemDef.js.map +1 -1
  509. package/lib/esm/appui-react/shared/AnyToolbarItemDef.js.map +1 -1
  510. package/lib/esm/appui-react/shared/CommandItemDef.js.map +1 -1
  511. package/lib/esm/appui-react/shared/CustomItemDef.js.map +1 -1
  512. package/lib/esm/appui-react/shared/CustomItemProps.js.map +1 -1
  513. package/lib/esm/appui-react/shared/GroupItemProps.js.map +1 -1
  514. package/lib/esm/appui-react/shared/ItemDefBase.js.map +1 -1
  515. package/lib/esm/appui-react/shared/ItemMap.js.map +1 -1
  516. package/lib/esm/appui-react/shared/ItemProps.js.map +1 -1
  517. package/lib/esm/appui-react/shared/MenuItem.js.map +1 -1
  518. package/lib/esm/appui-react/shared/SelectionScope.js.map +1 -1
  519. package/lib/esm/appui-react/shared/ToolItemDef.js.map +1 -1
  520. package/lib/esm/appui-react/stagepanels/StagePanelConfig.js.map +1 -1
  521. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  522. package/lib/esm/appui-react/stagepanels/StagePanelLocation.js.map +1 -1
  523. package/lib/esm/appui-react/stagepanels/StagePanelSection.js.map +1 -1
  524. package/lib/esm/appui-react/statusbar/Field.js.map +1 -1
  525. package/lib/esm/appui-react/statusbar/Field.scss +109 -109
  526. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
  527. package/lib/esm/appui-react/statusbar/LabelIndicator.js.map +1 -1
  528. package/lib/esm/appui-react/statusbar/LabelIndicator.scss +43 -43
  529. package/lib/esm/appui-react/statusbar/Overflow.js.map +1 -1
  530. package/lib/esm/appui-react/statusbar/Overflow.scss +27 -27
  531. package/lib/esm/appui-react/statusbar/OverflowPanel.js.map +1 -1
  532. package/lib/esm/appui-react/statusbar/OverflowPanel.scss +22 -22
  533. package/lib/esm/appui-react/statusbar/Popup.js.map +1 -1
  534. package/lib/esm/appui-react/statusbar/Separator.js.map +1 -1
  535. package/lib/esm/appui-react/statusbar/Separator.scss +12 -12
  536. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  537. package/lib/esm/appui-react/statusbar/StatusBar.scss +41 -41
  538. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  539. package/lib/esm/appui-react/statusbar/StatusBarItem.js.map +1 -1
  540. package/lib/esm/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  541. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  542. package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.js.map +1 -1
  543. package/lib/esm/appui-react/statusbar/dialog/Button.js.map +1 -1
  544. package/lib/esm/appui-react/statusbar/dialog/Dialog.js.map +1 -1
  545. package/lib/esm/appui-react/statusbar/dialog/TitleBar.js.map +1 -1
  546. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  547. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  548. package/lib/esm/appui-react/statusfields/ActivityCenter.js.map +1 -1
  549. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  550. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  551. package/lib/esm/appui-react/statusfields/SectionsField.scss +35 -35
  552. package/lib/esm/appui-react/statusfields/SelectionInfo.js.map +1 -1
  553. package/lib/esm/appui-react/statusfields/SelectionInfo.scss +14 -14
  554. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  555. package/lib/esm/appui-react/statusfields/SelectionScope.scss +46 -46
  556. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  557. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  558. package/lib/esm/appui-react/statusfields/ViewAttributes.scss +10 -10
  559. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  560. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +45 -45
  561. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  562. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +194 -194
  563. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  564. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  565. package/lib/esm/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  566. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  567. package/lib/esm/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  568. package/lib/esm/appui-react/toolbar/DragInteraction.js.map +1 -1
  569. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  570. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  571. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  572. package/lib/esm/appui-react/toolbar/ToolbarItem.js.map +1 -1
  573. package/lib/esm/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  574. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  575. package/lib/esm/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  576. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  577. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  578. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  579. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  580. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  581. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  582. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  583. package/lib/esm/appui-react/tools/ToolSettingsTools.js.map +1 -1
  584. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  585. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  586. package/lib/esm/appui-react/toolsettings/ToolInformation.js.map +1 -1
  587. package/lib/esm/appui-react/toolsettings/ToolSettingsManager.js.map +1 -1
  588. package/lib/esm/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  589. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  590. package/lib/esm/appui-react/ui-items-provider/ProviderItem.js.map +1 -1
  591. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  592. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  593. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  594. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  595. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  596. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  597. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  598. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  599. package/lib/esm/appui-react/ui-items-provider/isProviderItem.js.map +1 -1
  600. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  601. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  602. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.js.map +1 -1
  603. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.scss +212 -212
  604. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  605. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  606. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  607. package/lib/esm/appui-react/utils/PropsHelper.js.map +1 -1
  608. package/lib/esm/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  609. package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
  610. package/lib/esm/appui-react/utils/ViewUtilities.js.map +1 -1
  611. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  612. package/lib/esm/appui-react/widget-panels/FloatingWidget.js.map +1 -1
  613. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  614. package/lib/esm/appui-react/widget-panels/Frontstage.scss +19 -19
  615. package/lib/esm/appui-react/widget-panels/FrontstageContent.js.map +1 -1
  616. package/lib/esm/appui-react/widget-panels/ModalFrontstageComposer.js.map +1 -1
  617. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  618. package/lib/esm/appui-react/widget-panels/StatusBar.scss +10 -10
  619. package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
  620. package/lib/esm/appui-react/widget-panels/Tab.scss +14 -14
  621. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  622. package/lib/esm/appui-react/widget-panels/ToolSettings.scss +41 -41
  623. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  624. package/lib/esm/appui-react/widget-panels/Toolbars.scss +20 -20
  625. package/lib/esm/appui-react/widget-panels/useTransientState.js.map +1 -1
  626. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  627. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  628. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  629. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  630. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  631. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  632. package/lib/esm/appui-react/widgets/StableWidgetDef.js.map +1 -1
  633. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  634. package/lib/esm/appui-react/widgets/ToolSettingsContent.js.map +1 -1
  635. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  636. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  637. package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
  638. package/lib/esm/appui-react/widgets/WidgetConfig.js.map +1 -1
  639. package/lib/esm/appui-react/widgets/WidgetControl.js.map +1 -1
  640. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  641. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  642. package/lib/esm/appui-react/widgets/WidgetManager.js.map +1 -1
  643. package/lib/esm/appui-react/widgets/WidgetState.js.map +1 -1
  644. package/lib/esm/appui-react.js.map +1 -1
  645. package/lib/public/locales/en/UiFramework.json +381 -381
  646. package/package.json +31 -29
@@ -16,6 +16,7 @@ const connectIModel_1 = require("../redux/connectIModel");
16
16
  const UiFramework_1 = require("../UiFramework");
17
17
  const ViewUtilities_1 = require("../utils/ViewUtilities");
18
18
  const ListPicker_1 = require("./ListPicker");
19
+ const lodash_1 = require("lodash");
19
20
  const saved_view_svg_1 = require("@bentley/icons-generic/icons/saved-view.svg");
20
21
  /** ViewSelector Changed Event class.
21
22
  * @beta
@@ -40,6 +41,7 @@ class ViewSelector extends React.Component {
40
41
  constructor(props) {
41
42
  super(props);
42
43
  this._isMounted = false;
44
+ this._searchInput = "";
43
45
  this._handleViewSelectorShowUpdateEvent = (args) => {
44
46
  // istanbul ignore next
45
47
  if (!this._isMounted)
@@ -107,6 +109,8 @@ class ViewSelector extends React.Component {
107
109
  showDrawings: props.showDrawings,
108
110
  showSheets: props.showSheets,
109
111
  showUnknown: props.showUnknown,
112
+ searchBox: props.searchBox ? props.searchBox : true,
113
+ panelOnly: props.panelOnly ? props.panelOnly : false,
110
114
  };
111
115
  }
112
116
  async componentDidMount() {
@@ -126,27 +130,27 @@ class ViewSelector extends React.Component {
126
130
  if (this._removeShowUpdateListener)
127
131
  this._removeShowUpdateListener();
128
132
  }
129
- setStateContainers(views3d, views2d, sheets, unknown) {
133
+ setStateContainers(views3d, views2d, sheets, unknown, views3dFiltered, views2dFiltered, sheetsFiltered, unknownFiltered) {
130
134
  const views3dContainer = {
131
135
  key: "views3dContainer",
132
136
  name: UiFramework_1.UiFramework.translate("viewTypes.spatialViews"),
133
137
  enabled: false,
134
138
  type: ListPicker_1.ListItemType.Container,
135
- children: views3d,
139
+ children: views3dFiltered ? views3dFiltered : views3d,
136
140
  };
137
141
  const views2dContainer = {
138
142
  key: "views2dContainer",
139
143
  name: UiFramework_1.UiFramework.translate("viewTypes.drawings"),
140
144
  enabled: false,
141
145
  type: ListPicker_1.ListItemType.Container,
142
- children: views2d,
146
+ children: views2dFiltered ? views2dFiltered : views2d,
143
147
  };
144
148
  const sheetContainer = {
145
149
  key: "sheetContainer",
146
150
  name: UiFramework_1.UiFramework.translate("viewTypes.sheets"),
147
151
  enabled: false,
148
152
  type: ListPicker_1.ListItemType.Container,
149
- children: sheets,
153
+ children: sheetsFiltered ? sheetsFiltered : sheets,
150
154
  };
151
155
  const containers = [views3dContainer, views2dContainer, sheetContainer];
152
156
  // istanbul ignore if
@@ -157,7 +161,7 @@ class ViewSelector extends React.Component {
157
161
  name: UiFramework_1.UiFramework.translate("viewTypes.others"),
158
162
  enabled: false,
159
163
  type: ListPicker_1.ListItemType.Container,
160
- children: unknown,
164
+ children: unknownFiltered ? unknownFiltered : unknown,
161
165
  };
162
166
  if (unknown.length !== 0)
163
167
  containers.push(unknownContainer);
@@ -180,6 +184,10 @@ class ViewSelector extends React.Component {
180
184
  const views2d = [];
181
185
  const sheets = [];
182
186
  const unknown = [];
187
+ let views3dFiltered;
188
+ let views2dFiltered;
189
+ let sheetsFiltered;
190
+ let unknownFiltered;
183
191
  if (this.props.imodel && this.props.imodel.views.getViewList) {
184
192
  const query = { wantPrivate: false };
185
193
  const specs = await this.props.imodel.views.getViewList(query);
@@ -200,8 +208,14 @@ class ViewSelector extends React.Component {
200
208
  else if (this.state.showUnknown)
201
209
  unknown.push(viewItem);
202
210
  });
211
+ if (this._searchInput.length > 0) {
212
+ views3dFiltered = views3d.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));
213
+ views2dFiltered = views2d.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));
214
+ sheetsFiltered = sheets.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));
215
+ unknownFiltered = unknown.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));
216
+ }
203
217
  }
204
- this.setStateContainers(views3d, views2d, sheets, unknown);
218
+ this.setStateContainers(views3d, views2d, sheets, unknown, views3dFiltered, views2dFiltered, sheetsFiltered, unknownFiltered);
205
219
  }
206
220
  /**
207
221
  * Update state of the entries in the widget.
@@ -229,11 +243,12 @@ class ViewSelector extends React.Component {
229
243
  * Renders ViewSelector component
230
244
  */
231
245
  render() {
232
- if (!this.state.initialized)
233
- return null;
234
246
  const iconSpec = appui_abstract_1.IconSpecUtilities.createWebComponentIconSpec(saved_view_svg_1.default);
235
247
  const { imodel, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars
236
- return (React.createElement(ListPicker_1.ListPicker, { ...props, title: this.state.title, setEnabled: this._setEnabled, items: this.state.items, iconSpec: iconSpec, onExpanded: this._onExpanded }));
248
+ return (React.createElement(ListPicker_1.ListPicker, { ...props, title: this.state.title, setEnabled: this._setEnabled, items: this.state.items, iconSpec: iconSpec, onExpanded: this._onExpanded, searchBox: this.state.searchBox, onSearchValueChange: (0, lodash_1.debounce)((search) => {
249
+ this._searchInput = search;
250
+ void this.loadViews();
251
+ }, 300), panelOnly: this.state.panelOnly }));
237
252
  }
238
253
  }
239
254
  ViewSelector._onViewSelectorShowUpdateEvent = new ViewSelectorShowUpdateEvent();
@@ -1 +1 @@
1
- {"version":3,"file":"ViewSelector.js","sourceRoot":"","sources":["../../../../src/appui-react/pickers/ViewSelector.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 Picker\n */\n\nimport * as React from \"react\";\nimport { Id64String, Logger } from \"@itwin/core-bentley\";\nimport { IModelApp, IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport { IconSpecUtilities, UiEvent } from \"@itwin/appui-abstract\";\nimport { SupportsViewSelectorChange } from \"../content/ContentControl\";\nimport { connectIModelConnection } from \"../redux/connectIModel\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ViewUtilities } from \"../utils/ViewUtilities\";\nimport { ListItem, ListItemType, ListPicker } from \"./ListPicker\";\nimport svgSavedView from \"@bentley/icons-generic/icons/saved-view.svg\";\n\n// cSpell:ignore Spatials\n\n/** [[ViewSelectorChangedEvent]] Args interface.\n * @beta\n */\nexport interface ViewSelectorChangedEventArgs {\n iModelConnection: IModelConnection;\n viewDefinitionId: Id64String;\n viewState: ViewState;\n name: string;\n}\n\n/** ViewSelector Changed Event class.\n * @beta\n */\nexport class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> { }\n\n/** Properties for the [[ViewSelector]] component\n * @beta\n */\nexport interface ViewSelectorProps {\n imodel?: IModelConnection;\n listenForShowUpdates?: boolean;\n\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** State for the [[ViewSelector]] component\n * @beta\n */\ninterface ViewSelectorState {\n items: ListItem[];\n title: string;\n initialized: boolean;\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** Default properties of [[ViewSelector]] component.\n * @beta\n */\nexport type ViewSelectorDefaultProps = Pick<ViewSelectorProps, \"showSpatials\" | \"showDrawings\" | \"showSheets\" | \"showUnknown\">;\n\n/** ViewSelector Show Update Event Args interface.\n */\ninterface ViewSelectorShowUpdateEventArgs {\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** ViewSelector Show Update Event class.\n */\nclass ViewSelectorShowUpdateEvent extends UiEvent<ViewSelectorShowUpdateEventArgs> { }\n\n/** View Selector React component\n * @beta\n */\nexport class ViewSelector extends React.Component<ViewSelectorProps, ViewSelectorState> {\n\n private static readonly _onViewSelectorShowUpdateEvent = new ViewSelectorShowUpdateEvent();\n private _removeShowUpdateListener?: () => void;\n private _isMounted = false;\n\n public static readonly defaultProps: ViewSelectorDefaultProps = {\n showSpatials: true,\n showDrawings: true,\n showSheets: true,\n showUnknown: true,\n };\n\n /** Gets the [[ViewSelectorChangedEvent]] */\n public static readonly onViewSelectorChangedEvent = new ViewSelectorChangedEvent();\n\n /** Updates the ViewSelector show settings.\n */\n public static updateShowSettings(showSpatials: boolean, showDrawings: boolean, showSheets: boolean, showUnknown: boolean): void {\n ViewSelector._onViewSelectorShowUpdateEvent.emit({ showSpatials, showDrawings, showSheets, showUnknown });\n }\n\n /** Creates a ViewSelector */\n constructor(props: ViewSelectorProps) {\n super(props);\n\n this.state = {\n items: new Array<ListItem>(),\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: false,\n showSpatials: props.showSpatials,\n showDrawings: props.showDrawings,\n showSheets: props.showSheets,\n showUnknown: props.showUnknown,\n };\n }\n\n public override async componentDidMount() {\n this._isMounted = true;\n if (this.props.listenForShowUpdates)\n this._removeShowUpdateListener = ViewSelector._onViewSelectorShowUpdateEvent.addListener(this._handleViewSelectorShowUpdateEvent);\n\n await this.loadViews();\n }\n\n public override async componentDidUpdate(prevProps: ViewSelectorProps) {\n if (this.props.imodel !== prevProps.imodel) {\n await this.loadViews();\n }\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n // istanbul ignore else\n if (this._removeShowUpdateListener)\n this._removeShowUpdateListener();\n }\n\n private _handleViewSelectorShowUpdateEvent = (args: ViewSelectorShowUpdateEventArgs): void => {\n // istanbul ignore next\n if (!this._isMounted)\n return;\n\n this.setState(args, async () => this.loadViews());\n };\n\n private setStateContainers(views3d: ListItem[], views2d: ListItem[], sheets: ListItem[], unknown?: ListItem[]) {\n const views3dContainer: ListItem = {\n key: \"views3dContainer\",\n name: UiFramework.translate(\"viewTypes.spatialViews\"),\n enabled: false,\n type: ListItemType.Container,\n children: views3d,\n };\n\n const views2dContainer: ListItem = {\n key: \"views2dContainer\",\n name: UiFramework.translate(\"viewTypes.drawings\"),\n enabled: false,\n type: ListItemType.Container,\n children: views2d,\n };\n\n const sheetContainer: ListItem = {\n key: \"sheetContainer\",\n name: UiFramework.translate(\"viewTypes.sheets\"),\n enabled: false,\n type: ListItemType.Container,\n children: sheets,\n };\n\n const containers = [views3dContainer, views2dContainer, sheetContainer];\n\n // istanbul ignore if\n if (unknown && unknown.length > 0) {\n // This should never show, but just in case we missed a type of view state\n const unknownContainer: ListItem = {\n key: \"unknownContainer\",\n name: UiFramework.translate(\"viewTypes.others\"),\n enabled: false,\n type: ListItemType.Container,\n children: unknown,\n };\n\n if (unknown.length !== 0)\n containers.push(unknownContainer);\n }\n\n // istanbul ignore next\n if (!this._isMounted)\n return;\n\n this.setState({\n items: containers,\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: true,\n });\n }\n /**\n * Query the views and set the initial state with the iModel's views.\n */\n public async loadViews(): Promise<void> {\n // Query views and add them to state\n const views3d: ListItem[] = [];\n const views2d: ListItem[] = [];\n const sheets: ListItem[] = [];\n const unknown: ListItem[] = [];\n\n if (this.props.imodel && this.props.imodel.views.getViewList) {\n const query = { wantPrivate: false };\n const specs = await this.props.imodel.views.getViewList(query);\n\n specs.forEach((spec: IModelConnection.ViewSpec) => {\n const viewItem: ListItem = {\n key: spec.id,\n name: spec.name,\n enabled: false,\n type: ListItemType.Item,\n };\n\n const className = ViewUtilities.getBisBaseClass(spec.class);\n\n if (ViewUtilities.isSpatial(className) && this.state.showSpatials)\n views3d.push(viewItem);\n else if (ViewUtilities.isDrawing(className) && this.state.showDrawings)\n views2d.push(viewItem);\n else if (ViewUtilities.isSheet(className) && this.state.showSheets)\n sheets.push(viewItem);\n else if (this.state.showUnknown)\n unknown.push(viewItem);\n });\n }\n\n this.setStateContainers(views3d, views2d, sheets, unknown);\n }\n\n /**\n * Update state of the entries in the widget.\n * @param viewId Identifier for the relevant view\n */\n // istanbul ignore next\n public async updateState(viewId?: any): Promise<void> {\n // Wait for initialization finished\n if (!this.state.initialized)\n return;\n\n // Query views and add them to state\n const views3d: ListItem[] = this.state.items[0].children!;\n const views2d: ListItem[] = this.state.items[1].children!;\n const sheets: ListItem[] = this.state.items[2].children!;\n const unknown: ListItem[] = this.state.items.length > 3 ? this.state.items[3].children! : [];\n\n const updateChildren = (item: ListItem) => {\n if (item.key === viewId)\n return { ...item, enabled: true };\n else\n return { ...item, enabled: false };\n };\n\n this.setStateContainers(views3d.map(updateChildren), views2d.map(updateChildren), sheets.map(updateChildren), unknown.map(updateChildren));\n }\n\n // enable/disable the models\n // istanbul ignore next\n private _setEnabled = async (item: ListItem, _enabled: boolean) => {\n const activeContentControl = UiFramework.content.getActiveContentControl() as unknown as SupportsViewSelectorChange;\n if (!activeContentControl || !activeContentControl.supportsViewSelectorChange) {\n Logger.logError(UiFramework.loggerCategory(this), `No active ContentControl for ViewSelector change`);\n return;\n }\n\n // Enable the item temporarily to let user see that their click was registered\n // while we query for view state and change the current view which may take a bit\n if (_enabled && item.type !== ListItemType.Container) {\n // This itemMapper simply looks through all the list items and their nested children and enables the one\n // that we have registered to enable\n // Also disable all other items\n const itemMapper: (tempItem: ListItem) => ListItem = (tempItem: ListItem) => {\n if (tempItem.type === ListItemType.Container) {\n return { ...tempItem, children: tempItem.children!.map(itemMapper) };\n } else if (tempItem.key === item.key) {\n return { ...tempItem, enabled: true };\n } else {\n return { ...tempItem, enabled: false };\n }\n };\n\n // Create the new array with the current item enabled\n const itemsWithEnabled = this.state.items.map(itemMapper);\n\n // istanbul ignore next\n if (!this._isMounted)\n return;\n\n // Update the state so that we show the user it was enabled while we work in the background\n this.setState({ items: itemsWithEnabled });\n }\n\n // Load the view state using the viewSpec's ID\n const viewState = await this.props.imodel!.views.load(item.key);\n\n // Let activeContentControl process the ViewSelector change\n await activeContentControl.processViewSelectorChange(this.props.imodel!, item.key, viewState, item.name!);\n\n // Emit a change event\n ViewSelector.onViewSelectorChangedEvent.emit({\n iModelConnection: this.props.imodel!,\n viewDefinitionId: item.key,\n viewState,\n name: item.name!,\n });\n\n // Set state to show enabled the view that got selected\n this.updateState(item.key); // eslint-disable-line @typescript-eslint/no-floating-promises\n };\n\n // Hook on the category selector being expanded so that we may initialize if needed\n // istanbul ignore next\n private _onExpanded = (expand: boolean) => {\n if (expand)\n this.updateState(IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.view.id : undefined); // eslint-disable-line @typescript-eslint/no-floating-promises\n };\n\n /**\n * Renders ViewSelector component\n */\n public override render() {\n if (!this.state.initialized)\n return null;\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSavedView);\n\n const { imodel, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n return (\n <ListPicker\n {...props}\n title={this.state.title}\n setEnabled={this._setEnabled}\n items={this.state.items}\n iconSpec={iconSpec}\n onExpanded={this._onExpanded}\n />\n );\n }\n}\n\n/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.\n * @beta\n */\nexport const IModelConnectedViewSelector = connectIModelConnection(null, null)(ViewSelector); // eslint-disable-line @typescript-eslint/naming-convention\n"]}
1
+ {"version":3,"file":"ViewSelector.js","sourceRoot":"","sources":["../../../../src/appui-react/pickers/ViewSelector.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 Picker\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Id64String, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, ViewState } from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { SupportsViewSelectorChange } from \"../content/ContentControl\";\r\nimport { connectIModelConnection } from \"../redux/connectIModel\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { ViewUtilities } from \"../utils/ViewUtilities\";\r\nimport { ListItem, ListItemType, ListPicker } from \"./ListPicker\";\r\nimport { debounce } from \"lodash\";\r\nimport svgSavedView from \"@bentley/icons-generic/icons/saved-view.svg\";\r\n\r\n// cSpell:ignore Spatials\r\n\r\n/** [[ViewSelectorChangedEvent]] Args interface.\r\n * @beta\r\n */\r\nexport interface ViewSelectorChangedEventArgs {\r\n iModelConnection: IModelConnection;\r\n viewDefinitionId: Id64String;\r\n viewState: ViewState;\r\n name: string;\r\n}\r\n\r\n/** ViewSelector Changed Event class.\r\n * @beta\r\n */\r\nexport class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> { }\r\n\r\n/** Properties for the [[ViewSelector]] component\r\n * @beta\r\n */\r\nexport interface ViewSelectorProps {\r\n imodel?: IModelConnection;\r\n listenForShowUpdates?: boolean;\r\n\r\n showSpatials: boolean;\r\n showDrawings: boolean;\r\n showSheets: boolean;\r\n showUnknown: boolean;\r\n searchBox?: boolean;\r\n panelOnly?: boolean;\r\n}\r\n\r\n/** State for the [[ViewSelector]] component\r\n * @beta\r\n */\r\ninterface ViewSelectorState {\r\n items: ListItem[];\r\n title: string;\r\n initialized: boolean;\r\n showSpatials: boolean;\r\n showDrawings: boolean;\r\n showSheets: boolean;\r\n showUnknown: boolean;\r\n searchBox: boolean;\r\n panelOnly: boolean;\r\n}\r\n\r\n/** Default properties of [[ViewSelector]] component.\r\n * @beta\r\n */\r\nexport type ViewSelectorDefaultProps = Pick<ViewSelectorProps, \"showSpatials\" | \"showDrawings\" | \"showSheets\" | \"showUnknown\">;\r\n\r\n/** ViewSelector Show Update Event Args interface.\r\n */\r\ninterface ViewSelectorShowUpdateEventArgs {\r\n showSpatials: boolean;\r\n showDrawings: boolean;\r\n showSheets: boolean;\r\n showUnknown: boolean;\r\n}\r\n\r\n/** ViewSelector Show Update Event class.\r\n */\r\nclass ViewSelectorShowUpdateEvent extends UiEvent<ViewSelectorShowUpdateEventArgs> { }\r\n\r\n/** View Selector React component\r\n * @beta\r\n */\r\nexport class ViewSelector extends React.Component<ViewSelectorProps, ViewSelectorState> {\r\n\r\n private static readonly _onViewSelectorShowUpdateEvent = new ViewSelectorShowUpdateEvent();\r\n private _removeShowUpdateListener?: () => void;\r\n private _isMounted = false;\r\n private _searchInput = \"\";\r\n\r\n public static readonly defaultProps: ViewSelectorDefaultProps = {\r\n showSpatials: true,\r\n showDrawings: true,\r\n showSheets: true,\r\n showUnknown: true,\r\n };\r\n\r\n /** Gets the [[ViewSelectorChangedEvent]] */\r\n public static readonly onViewSelectorChangedEvent = new ViewSelectorChangedEvent();\r\n\r\n /** Updates the ViewSelector show settings.\r\n */\r\n public static updateShowSettings(showSpatials: boolean, showDrawings: boolean, showSheets: boolean, showUnknown: boolean): void {\r\n ViewSelector._onViewSelectorShowUpdateEvent.emit({ showSpatials, showDrawings, showSheets, showUnknown });\r\n }\r\n\r\n /** Creates a ViewSelector */\r\n constructor(props: ViewSelectorProps) {\r\n super(props);\r\n\r\n this.state = {\r\n items: new Array<ListItem>(),\r\n title: UiFramework.translate(\"viewTypes.views\"),\r\n initialized: false,\r\n showSpatials: props.showSpatials,\r\n showDrawings: props.showDrawings,\r\n showSheets: props.showSheets,\r\n showUnknown: props.showUnknown,\r\n searchBox: props.searchBox ? props.searchBox : true,\r\n panelOnly: props.panelOnly ? props.panelOnly : false,\r\n };\r\n }\r\n\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n if (this.props.listenForShowUpdates)\r\n this._removeShowUpdateListener = ViewSelector._onViewSelectorShowUpdateEvent.addListener(this._handleViewSelectorShowUpdateEvent);\r\n\r\n await this.loadViews();\r\n }\r\n\r\n public override async componentDidUpdate(prevProps: ViewSelectorProps) {\r\n if (this.props.imodel !== prevProps.imodel) {\r\n await this.loadViews();\r\n }\r\n }\r\n\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n // istanbul ignore else\r\n if (this._removeShowUpdateListener)\r\n this._removeShowUpdateListener();\r\n }\r\n\r\n private _handleViewSelectorShowUpdateEvent = (args: ViewSelectorShowUpdateEventArgs): void => {\r\n // istanbul ignore next\r\n if (!this._isMounted)\r\n return;\r\n\r\n this.setState(args, async () => this.loadViews());\r\n };\r\n\r\n private setStateContainers(views3d: ListItem[], views2d: ListItem[], sheets: ListItem[], unknown?: ListItem[],\r\n views3dFiltered?: ListItem[], views2dFiltered?: ListItem[], sheetsFiltered?: ListItem[], unknownFiltered?: ListItem[]) {\r\n const views3dContainer: ListItem = {\r\n key: \"views3dContainer\",\r\n name: UiFramework.translate(\"viewTypes.spatialViews\"),\r\n enabled: false,\r\n type: ListItemType.Container,\r\n children: views3dFiltered ? views3dFiltered : views3d,\r\n };\r\n\r\n const views2dContainer: ListItem = {\r\n key: \"views2dContainer\",\r\n name: UiFramework.translate(\"viewTypes.drawings\"),\r\n enabled: false,\r\n type: ListItemType.Container,\r\n children: views2dFiltered ? views2dFiltered : views2d,\r\n };\r\n\r\n const sheetContainer: ListItem = {\r\n key: \"sheetContainer\",\r\n name: UiFramework.translate(\"viewTypes.sheets\"),\r\n enabled: false,\r\n type: ListItemType.Container,\r\n children: sheetsFiltered ? sheetsFiltered : sheets,\r\n };\r\n\r\n const containers = [views3dContainer, views2dContainer, sheetContainer];\r\n\r\n // istanbul ignore if\r\n if (unknown && unknown.length > 0) {\r\n // This should never show, but just in case we missed a type of view state\r\n const unknownContainer: ListItem = {\r\n key: \"unknownContainer\",\r\n name: UiFramework.translate(\"viewTypes.others\"),\r\n enabled: false,\r\n type: ListItemType.Container,\r\n children: unknownFiltered ? unknownFiltered : unknown,\r\n };\r\n\r\n if (unknown.length !== 0)\r\n containers.push(unknownContainer);\r\n }\r\n\r\n // istanbul ignore next\r\n if (!this._isMounted)\r\n return;\r\n\r\n this.setState({\r\n items: containers,\r\n title: UiFramework.translate(\"viewTypes.views\"),\r\n initialized: true,\r\n });\r\n }\r\n /**\r\n * Query the views and set the initial state with the iModel's views.\r\n */\r\n public async loadViews(): Promise<void> {\r\n // Query views and add them to state\r\n const views3d: ListItem[] = [];\r\n const views2d: ListItem[] = [];\r\n const sheets: ListItem[] = [];\r\n const unknown: ListItem[] = [];\r\n let views3dFiltered: ListItem[] | undefined;\r\n let views2dFiltered: ListItem[] | undefined;\r\n let sheetsFiltered: ListItem[] | undefined;\r\n let unknownFiltered: ListItem[] | undefined;\r\n\r\n if (this.props.imodel && this.props.imodel.views.getViewList) {\r\n const query = { wantPrivate: false };\r\n const specs = await this.props.imodel.views.getViewList(query);\r\n\r\n specs.forEach((spec: IModelConnection.ViewSpec) => {\r\n const viewItem: ListItem = {\r\n key: spec.id,\r\n name: spec.name,\r\n enabled: false,\r\n type: ListItemType.Item,\r\n };\r\n\r\n const className = ViewUtilities.getBisBaseClass(spec.class);\r\n\r\n if (ViewUtilities.isSpatial(className) && this.state.showSpatials)\r\n views3d.push(viewItem);\r\n else if (ViewUtilities.isDrawing(className) && this.state.showDrawings)\r\n views2d.push(viewItem);\r\n else if (ViewUtilities.isSheet(className) && this.state.showSheets)\r\n sheets.push(viewItem);\r\n else if (this.state.showUnknown)\r\n unknown.push(viewItem);\r\n });\r\n\r\n if(this._searchInput.length > 0){\r\n views3dFiltered = views3d.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));\r\n views2dFiltered = views2d.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));\r\n sheetsFiltered = sheets.filter((view) => view.name?.toLowerCase().includes(this._searchInput.toLowerCase()));\r\n unknownFiltered = unknown.filter((view) => view.name?. toLowerCase().includes(this._searchInput.toLowerCase()));\r\n }\r\n }\r\n\r\n this.setStateContainers(views3d, views2d, sheets, unknown, views3dFiltered, views2dFiltered, sheetsFiltered, unknownFiltered);\r\n }\r\n\r\n /**\r\n * Update state of the entries in the widget.\r\n * @param viewId Identifier for the relevant view\r\n */\r\n // istanbul ignore next\r\n public async updateState(viewId?: any): Promise<void> {\r\n // Wait for initialization finished\r\n if (!this.state.initialized)\r\n return;\r\n\r\n // Query views and add them to state\r\n const views3d: ListItem[] = this.state.items[0].children!;\r\n const views2d: ListItem[] = this.state.items[1].children!;\r\n const sheets: ListItem[] = this.state.items[2].children!;\r\n const unknown: ListItem[] = this.state.items.length > 3 ? this.state.items[3].children! : [];\r\n\r\n const updateChildren = (item: ListItem) => {\r\n if (item.key === viewId)\r\n return { ...item, enabled: true };\r\n else\r\n return { ...item, enabled: false };\r\n };\r\n\r\n this.setStateContainers(views3d.map(updateChildren), views2d.map(updateChildren), sheets.map(updateChildren), unknown.map(updateChildren));\r\n }\r\n\r\n // enable/disable the models\r\n // istanbul ignore next\r\n private _setEnabled = async (item: ListItem, _enabled: boolean) => {\r\n const activeContentControl = UiFramework.content.getActiveContentControl() as unknown as SupportsViewSelectorChange;\r\n if (!activeContentControl || !activeContentControl.supportsViewSelectorChange) {\r\n Logger.logError(UiFramework.loggerCategory(this), `No active ContentControl for ViewSelector change`);\r\n return;\r\n }\r\n\r\n // Enable the item temporarily to let user see that their click was registered\r\n // while we query for view state and change the current view which may take a bit\r\n if (_enabled && item.type !== ListItemType.Container) {\r\n // This itemMapper simply looks through all the list items and their nested children and enables the one\r\n // that we have registered to enable\r\n // Also disable all other items\r\n const itemMapper: (tempItem: ListItem) => ListItem = (tempItem: ListItem) => {\r\n if (tempItem.type === ListItemType.Container) {\r\n return { ...tempItem, children: tempItem.children!.map(itemMapper) };\r\n } else if (tempItem.key === item.key) {\r\n return { ...tempItem, enabled: true };\r\n } else {\r\n return { ...tempItem, enabled: false };\r\n }\r\n };\r\n\r\n // Create the new array with the current item enabled\r\n const itemsWithEnabled = this.state.items.map(itemMapper);\r\n\r\n // istanbul ignore next\r\n if (!this._isMounted)\r\n return;\r\n\r\n // Update the state so that we show the user it was enabled while we work in the background\r\n this.setState({ items: itemsWithEnabled });\r\n }\r\n\r\n // Load the view state using the viewSpec's ID\r\n const viewState = await this.props.imodel!.views.load(item.key);\r\n\r\n // Let activeContentControl process the ViewSelector change\r\n await activeContentControl.processViewSelectorChange(this.props.imodel!, item.key, viewState, item.name!);\r\n\r\n // Emit a change event\r\n ViewSelector.onViewSelectorChangedEvent.emit({\r\n iModelConnection: this.props.imodel!,\r\n viewDefinitionId: item.key,\r\n viewState,\r\n name: item.name!,\r\n });\r\n\r\n // Set state to show enabled the view that got selected\r\n this.updateState(item.key); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n };\r\n\r\n // Hook on the category selector being expanded so that we may initialize if needed\r\n // istanbul ignore next\r\n private _onExpanded = (expand: boolean) => {\r\n if (expand)\r\n this.updateState(IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.view.id : undefined); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n };\r\n\r\n /**\r\n * Renders ViewSelector component\r\n */\r\n public override render() {\r\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSavedView);\r\n\r\n const { imodel, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n\r\n return (\r\n <ListPicker\r\n {...props}\r\n title={this.state.title}\r\n setEnabled={this._setEnabled}\r\n items={this.state.items}\r\n iconSpec={iconSpec}\r\n onExpanded={this._onExpanded}\r\n searchBox={this.state.searchBox}\r\n onSearchValueChange={debounce((search: string) => {\r\n this._searchInput = search;\r\n void this.loadViews();\r\n }, 300)}\r\n panelOnly={this.state.panelOnly}\r\n />\r\n );\r\n }\r\n}\r\n\r\n/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.\r\n * @beta\r\n */\r\nexport const IModelConnectedViewSelector = connectIModelConnection(null, null)(ViewSelector); // eslint-disable-line @typescript-eslint/naming-convention\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CardPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/CardPopup.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 Popup\n */\n\nimport \"./CardPopup.scss\";\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { CommonToolbarItem, OnCancelFunc, OnItemExecutedFunc, PropertyRecord, RelativePosition, SpecialKey } from \"@itwin/appui-abstract\";\nimport { DivWithOutsideClick, FocusTrap, Orientation, Point, Size, SizeProps } from \"@itwin/core-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport { isReactContent, PopupContentType, PopupManager, PopupPropsBase } from \"./PopupManager\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { MessageDiv } from \"../messages/MessageSpan\";\nimport { Direction, PropertyValueRendererManager, ToolbarOpacitySetting, ToolbarPanelAlignment, ToolbarWithOverflow } from \"@itwin/components-react\";\n\n/** Props for defining a CardPopup editor\n * @beta */\nexport interface CardPopupProps extends PopupPropsBase {\n content: PopupContentType;\n title: string | PropertyRecord | undefined;\n items: CommonToolbarItem[] | undefined;\n relativePosition: RelativePosition;\n orientation: Orientation;\n onCancel: OnCancelFunc;\n onItemExecuted: OnItemExecutedFunc;\n}\n\n/** @internal */\ninterface CardPopupState {\n size: Size;\n}\n\n/** Popup component for Input Editor\n * @beta\n */\nexport class CardPopup extends React.PureComponent<CardPopupProps, CardPopupState> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n private _handleKeyDown = (event: React.KeyboardEvent): void => {\n switch (event.key) {\n case SpecialKey.Escape:\n this._cancel();\n break;\n }\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n\n public override render() {\n let point = PopupManager.getPopupPosition(this.props.el, this.props.pt, new Point(), this.state.size);\n const popupRect = CursorPopup.getPopupRect(point, this.props.offset, this.state.size, this.props.relativePosition);\n point = new Point(popupRect.left, popupRect.top);\n\n return (\n <PositionPopup key={this.props.id}\n className={classnames(\"uifw-no-border\", \"uifw-card\")}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n <DivWithOutsideClick onOutsideClick={this.props.onCancel} onKeyDown={this._handleKeyDown}>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <Card content={this.props.content} title={this.props.title} items={this.props.items}\n onItemExecuted={this.props.onItemExecuted} />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n\n/** Props defining a Card component\n * @beta */\nexport interface CardProps {\n content: PopupContentType;\n title: string | PropertyRecord | undefined;\n items: CommonToolbarItem[] | undefined;\n onItemExecuted: OnItemExecutedFunc;\n}\n\n/** Card component\n * @beta */\nexport function Card(props: CardProps) {\n let titleNode: React.ReactNode;\n // istanbul ignore else\n if (props.title) {\n if (typeof props.title === \"string\")\n titleNode = <Text variant=\"leading\">{props.title}</Text>;\n else {\n const propertyValueRendererManager = PropertyValueRendererManager.defaultManager;\n const titleValue = propertyValueRendererManager.render(props.title);\n titleNode = <Text variant=\"leading\">{titleValue}</Text>;\n }\n }\n\n const content = isReactContent(props.content) ? props.content.reactNode : <MessageDiv message={props.content} />;\n\n return (\n <>\n <div className=\"uifw-card-content\">\n {props.title &&\n <>\n {titleNode}\n <div className=\"uifw-card-gap\" />\n </>\n }\n {content}\n </div>\n {props.items &&\n <>\n <div className=\"uifw-card-separator\" />\n <ToolbarWithOverflow\n expandsTo={Direction.Bottom}\n panelAlignment={ToolbarPanelAlignment.Start}\n items={props.items}\n useDragInteraction={true}\n toolbarOpacitySetting={ToolbarOpacitySetting.Transparent}\n onItemExecuted={props.onItemExecuted}\n />\n </>\n }\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"CardPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/CardPopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,4BAA0B;AAC1B,+BAA+B;AAC/B,2CAAoC;AACpC,0DAA0I;AAC1I,kDAAwG;AACxG,wDAA4C;AAC5C,mEAAgE;AAChE,iDAAgG;AAChG,mDAAgD;AAChD,yDAAqD;AACrD,8DAAqJ;AAmBrJ;;GAEG;AACH,MAAa,SAAU,SAAQ,KAAK,CAAC,aAA6C;IAAlF;;QACE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,KAA0B,EAAQ,EAAE;YAC5D,QAAQ,KAAK,CAAC,GAAG,EAAE;gBACjB,KAAK,2BAAU,CAAC,MAAM;oBACpB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM;aACT;QACH,CAAC,CAAC;IA6BJ,CAAC;IA3BS,OAAO;QACb,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACvB;IACH,CAAC;IAEe,MAAM;QACpB,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,kBAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACnH,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjD,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAC/B,SAAS,EAAE,IAAA,oBAAU,EAAC,gBAAgB,EAAE,WAAW,CAAC,EACpD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAE9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc;gBACtF,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;oBACpD,oBAAC,IAAI,IAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACjF,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAI,CACrC,CACQ,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AA/CD,8BA+CC;AAWD;WACW;AACX,SAAgB,IAAI,CAAC,KAAgB;IACnC,IAAI,SAA0B,CAAC;IAC/B,uBAAuB;IACvB,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YACjC,SAAS,GAAG,oBAAC,oBAAI,IAAC,OAAO,EAAC,SAAS,IAAE,KAAK,CAAC,KAAK,CAAQ,CAAC;aACtD;YACH,MAAM,4BAA4B,GAAG,+CAA4B,CAAC,cAAc,CAAC;YACjF,MAAM,UAAU,GAAG,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpE,SAAS,GAAG,oBAAC,oBAAI,IAAC,OAAO,EAAC,SAAS,IAAE,UAAU,CAAQ,CAAC;SACzD;KACF;IAED,MAAM,OAAO,GAAG,IAAA,6BAAc,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAC,wBAAU,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IAEjH,OAAO,CACL;QACE,6BAAK,SAAS,EAAC,mBAAmB;YAC/B,KAAK,CAAC,KAAK;gBACV;oBACG,SAAS;oBACV,6BAAK,SAAS,EAAC,eAAe,GAAG,CAChC;YAEJ,OAAO,CACJ;QACL,KAAK,CAAC,KAAK;YACV;gBACE,6BAAK,SAAS,EAAC,qBAAqB,GAAG;gBACvC,oBAAC,sCAAmB,IAClB,SAAS,EAAE,4BAAS,CAAC,MAAM,EAC3B,cAAc,EAAE,wCAAqB,CAAC,KAAK,EAC3C,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,kBAAkB,EAAE,IAAI,EACxB,qBAAqB,EAAE,wCAAqB,CAAC,WAAW,EACxD,cAAc,EAAE,KAAK,CAAC,cAAc,GACpC,CACD,CAEJ,CACJ,CAAC;AACJ,CAAC;AAzCD,oBAyCC","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 Popup\r\n */\r\n\r\nimport \"./CardPopup.scss\";\r\nimport * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { CommonToolbarItem, OnCancelFunc, OnItemExecutedFunc, PropertyRecord, RelativePosition, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { DivWithOutsideClick, FocusTrap, Orientation, Point, Size, SizeProps } from \"@itwin/core-react\";\r\nimport { Text } from \"@itwin/itwinui-react\";\r\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\r\nimport { isReactContent, PopupContentType, PopupManager, PopupPropsBase } from \"./PopupManager\";\r\nimport { PositionPopup } from \"./PositionPopup\";\r\nimport { MessageDiv } from \"../messages/MessageSpan\";\r\nimport { Direction, PropertyValueRendererManager, ToolbarOpacitySetting, ToolbarPanelAlignment, ToolbarWithOverflow } from \"@itwin/components-react\";\r\n\r\n/** Props for defining a CardPopup editor\r\n * @beta */\r\nexport interface CardPopupProps extends PopupPropsBase {\r\n content: PopupContentType;\r\n title: string | PropertyRecord | undefined;\r\n items: CommonToolbarItem[] | undefined;\r\n relativePosition: RelativePosition;\r\n orientation: Orientation;\r\n onCancel: OnCancelFunc;\r\n onItemExecuted: OnItemExecutedFunc;\r\n}\r\n\r\n/** @internal */\r\ninterface CardPopupState {\r\n size: Size;\r\n}\r\n\r\n/** Popup component for Input Editor\r\n * @beta\r\n */\r\nexport class CardPopup extends React.PureComponent<CardPopupProps, CardPopupState> {\r\n /** @internal */\r\n public override readonly state = {\r\n size: new Size(-1, -1),\r\n };\r\n\r\n private _onSizeKnown = (newSize: SizeProps) => {\r\n // istanbul ignore else\r\n if (!this.state.size.equals(newSize))\r\n this.setState({ size: Size.create(newSize) });\r\n };\r\n\r\n private _handleKeyDown = (event: React.KeyboardEvent): void => {\r\n switch (event.key) {\r\n case SpecialKey.Escape:\r\n this._cancel();\r\n break;\r\n }\r\n };\r\n\r\n private _cancel() {\r\n // istanbul ignore else\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n }\r\n }\r\n\r\n public override render() {\r\n let point = PopupManager.getPopupPosition(this.props.el, this.props.pt, new Point(), this.state.size);\r\n const popupRect = CursorPopup.getPopupRect(point, this.props.offset, this.state.size, this.props.relativePosition);\r\n point = new Point(popupRect.left, popupRect.top);\r\n\r\n return (\r\n <PositionPopup key={this.props.id}\r\n className={classnames(\"uifw-no-border\", \"uifw-card\")}\r\n point={point}\r\n onSizeKnown={this._onSizeKnown}\r\n >\r\n <DivWithOutsideClick onOutsideClick={this.props.onCancel} onKeyDown={this._handleKeyDown}>\r\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\r\n <Card content={this.props.content} title={this.props.title} items={this.props.items}\r\n onItemExecuted={this.props.onItemExecuted} />\r\n </FocusTrap>\r\n </DivWithOutsideClick>\r\n </PositionPopup>\r\n );\r\n }\r\n}\r\n\r\n/** Props defining a Card component\r\n * @beta */\r\nexport interface CardProps {\r\n content: PopupContentType;\r\n title: string | PropertyRecord | undefined;\r\n items: CommonToolbarItem[] | undefined;\r\n onItemExecuted: OnItemExecutedFunc;\r\n}\r\n\r\n/** Card component\r\n * @beta */\r\nexport function Card(props: CardProps) {\r\n let titleNode: React.ReactNode;\r\n // istanbul ignore else\r\n if (props.title) {\r\n if (typeof props.title === \"string\")\r\n titleNode = <Text variant=\"leading\">{props.title}</Text>;\r\n else {\r\n const propertyValueRendererManager = PropertyValueRendererManager.defaultManager;\r\n const titleValue = propertyValueRendererManager.render(props.title);\r\n titleNode = <Text variant=\"leading\">{titleValue}</Text>;\r\n }\r\n }\r\n\r\n const content = isReactContent(props.content) ? props.content.reactNode : <MessageDiv message={props.content} />;\r\n\r\n return (\r\n <>\r\n <div className=\"uifw-card-content\">\r\n {props.title &&\r\n <>\r\n {titleNode}\r\n <div className=\"uifw-card-gap\" />\r\n </>\r\n }\r\n {content}\r\n </div>\r\n {props.items &&\r\n <>\r\n <div className=\"uifw-card-separator\" />\r\n <ToolbarWithOverflow\r\n expandsTo={Direction.Bottom}\r\n panelAlignment={ToolbarPanelAlignment.Start}\r\n items={props.items}\r\n useDragInteraction={true}\r\n toolbarOpacitySetting={ToolbarOpacitySetting.Transparent}\r\n onItemExecuted={props.onItemExecuted}\r\n />\r\n </>\r\n }\r\n </>\r\n );\r\n}\r\n"]}
@@ -1,25 +1,25 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
6
- @import "~@itwin/core-react/lib/cjs/core-react/z-index";
7
-
8
- .uifw-card {
9
- background-color: $buic-background-card;
10
- @include uicore-z-index(content-card-popup);
11
-
12
- .uifw-card-content {
13
- padding: 6px 10px;
14
- }
15
-
16
- .uifw-card-separator {
17
- height: 2px;
18
- margin-bottom: 1px;
19
- background: rgba($buic-foreground-body-reverse-rgb, 0.45);
20
- }
21
- }
22
-
23
- .uifw-card-gap {
24
- height: 4px;
25
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/z-index";
7
+
8
+ .uifw-card {
9
+ background-color: $buic-background-card;
10
+ @include uicore-z-index(content-card-popup);
11
+
12
+ .uifw-card-content {
13
+ padding: 6px 10px;
14
+ }
15
+
16
+ .uifw-card-separator {
17
+ height: 2px;
18
+ margin-bottom: 1px;
19
+ background: rgba($buic-foreground-body-reverse-rgb, 0.45);
20
+ }
21
+ }
22
+
23
+ .uifw-card-gap {
24
+ height: 4px;
25
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLElementPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/HTMLElementPopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAE/B,kDAA6F;AAC7F,mEAAgE;AAChE,iDAA8D;AAC9D,mDAAgD;AAChD,yDAAqD;AAerD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK,CAAC,aAA2D;IAAvG;;QACE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;IAmBJ,CAAC;IAjBiB,MAAM;QACpB,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,kBAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACnH,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjD,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAC/B,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAE9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,wBAAU,IAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAI,CACvB,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AA7BD,4CA6BC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { OnCancelFunc, RelativePosition } from \"@itwin/appui-abstract\";\nimport { DivWithOutsideClick, Orientation, Point, Size, SizeProps } from \"@itwin/core-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport { PopupManager, PopupPropsBase } from \"./PopupManager\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { MessageDiv } from \"../messages/MessageSpan\";\n\n/** @alpha */\nexport interface HTMLElementPopupProps extends PopupPropsBase {\n element: HTMLElement;\n relativePosition: RelativePosition;\n orientation: Orientation;\n onCancel: OnCancelFunc;\n}\n\n/** @internal */\ninterface HTMLElementPopupState {\n size: Size;\n}\n\n/** Popup component for HTMLElement\n * @alpha\n */\nexport class HTMLElementPopup extends React.PureComponent<HTMLElementPopupProps, HTMLElementPopupState> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n public override render() {\n let point = PopupManager.getPopupPosition(this.props.el, this.props.pt, new Point(), this.state.size);\n const popupRect = CursorPopup.getPopupRect(point, this.props.offset, this.state.size, this.props.relativePosition);\n point = new Point(popupRect.left, popupRect.top);\n\n return (\n <PositionPopup key={this.props.id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\n <MessageDiv message={this.props.element} />\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"HTMLElementPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/HTMLElementPopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAE/B,kDAA6F;AAC7F,mEAAgE;AAChE,iDAA8D;AAC9D,mDAAgD;AAChD,yDAAqD;AAerD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK,CAAC,aAA2D;IAAvG;;QACE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;IAmBJ,CAAC;IAjBiB,MAAM;QACpB,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,kBAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACnH,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjD,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAC/B,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAE9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,wBAAU,IAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAI,CACvB,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AA7BD,4CA6BC","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 Popup\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { OnCancelFunc, RelativePosition } from \"@itwin/appui-abstract\";\r\nimport { DivWithOutsideClick, Orientation, Point, Size, SizeProps } from \"@itwin/core-react\";\r\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\r\nimport { PopupManager, PopupPropsBase } from \"./PopupManager\";\r\nimport { PositionPopup } from \"./PositionPopup\";\r\nimport { MessageDiv } from \"../messages/MessageSpan\";\r\n\r\n/** @alpha */\r\nexport interface HTMLElementPopupProps extends PopupPropsBase {\r\n element: HTMLElement;\r\n relativePosition: RelativePosition;\r\n orientation: Orientation;\r\n onCancel: OnCancelFunc;\r\n}\r\n\r\n/** @internal */\r\ninterface HTMLElementPopupState {\r\n size: Size;\r\n}\r\n\r\n/** Popup component for HTMLElement\r\n * @alpha\r\n */\r\nexport class HTMLElementPopup extends React.PureComponent<HTMLElementPopupProps, HTMLElementPopupState> {\r\n /** @internal */\r\n public override readonly state = {\r\n size: new Size(-1, -1),\r\n };\r\n\r\n private _onSizeKnown = (newSize: SizeProps) => {\r\n // istanbul ignore else\r\n if (!this.state.size.equals(newSize))\r\n this.setState({ size: Size.create(newSize) });\r\n };\r\n\r\n public override render() {\r\n let point = PopupManager.getPopupPosition(this.props.el, this.props.pt, new Point(), this.state.size);\r\n const popupRect = CursorPopup.getPopupRect(point, this.props.offset, this.state.size, this.props.relativePosition);\r\n point = new Point(popupRect.left, popupRect.top);\r\n\r\n return (\r\n <PositionPopup key={this.props.id}\r\n className=\"uifw-no-border\"\r\n point={point}\r\n onSizeKnown={this._onSizeKnown}\r\n >\r\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\r\n <MessageDiv message={this.props.element} />\r\n </DivWithOutsideClick>\r\n </PositionPopup>\r\n );\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InputEditorPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/InputEditorPopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,0DAAyH;AACzH,8DAA+E;AAC/E,kDAAyE;AACzE,iDAA8D;AAC9D,mDAAsE;AAEtE,YAAY;AACZ,MAAa,wBAAwB;IACnC,YACkB,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;QAGtC,iBAAY,GAAG,CAAC,IAAyB,EAAE,EAAE;YAClD,IAAI,QAAQ,GAAqB,CAAC,CAAC;YACnC,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE;gBACpG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aAChC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IATE,CAAC;CAUN;AAbD,4DAaC;AAeD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK,CAAC,aAA2D;IAAvG;;QACE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;IAuBJ,CAAC;IArBC,gBAAgB;IACA,MAAM;QACpB,MAAM,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9G,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAC/B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAE9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,oCAAoB;oBACnB,oBAAC,kCAAe,IACd,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAC/C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,IAAI,GAAI,CACC,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AAjCD,4CAiCC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { OnCancelFunc, OnValueCommitFunc, Primitives, PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport { EditorContainer, PropertyUpdatedArgs } from \"@itwin/components-react\";\nimport { DivWithOutsideClick, Size, SizeProps } from \"@itwin/core-react\";\nimport { PopupManager, PopupPropsBase } from \"./PopupManager\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup\";\n\n/** @beta */\nexport class InputEditorCommitHandler {\n constructor(\n public readonly onCommit: OnValueCommitFunc,\n ) { }\n\n public handleCommit = (args: PropertyUpdatedArgs) => {\n let newValue: Primitives.Value = 0;\n // istanbul ignore else\n if (args.newValue.valueFormat === PropertyValueFormat.Primitive && args.newValue.value !== undefined) {\n newValue = args.newValue.value;\n }\n this.onCommit(newValue);\n };\n}\n\n/** Props for popup editor\n * @beta */\nexport interface InputEditorPopupProps extends PopupPropsBase {\n record: PropertyRecord;\n onCancel: OnCancelFunc;\n commitHandler: InputEditorCommitHandler;\n}\n\n/** @internal */\ninterface InputEditorPopupState {\n size: Size;\n}\n\n/** Popup component for Input Editor\n * @alpha\n */\nexport class InputEditorPopup extends React.PureComponent<InputEditorPopupProps, InputEditorPopupState> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n /** @internal */\n public override render() {\n const point = PopupManager.getPopupPosition(this.props.el, this.props.pt, this.props.offset, this.state.size);\n\n return (\n <PositionPopup key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\n <PositionPopupContent>\n <EditorContainer\n propertyRecord={this.props.record}\n onCommit={this.props.commitHandler.handleCommit}\n onCancel={this.props.onCancel}\n setFocus={true} />\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"InputEditorPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/InputEditorPopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,0DAAyH;AACzH,8DAA+E;AAC/E,kDAAyE;AACzE,iDAA8D;AAC9D,mDAAsE;AAEtE,YAAY;AACZ,MAAa,wBAAwB;IACnC,YACkB,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;QAGtC,iBAAY,GAAG,CAAC,IAAyB,EAAE,EAAE;YAClD,IAAI,QAAQ,GAAqB,CAAC,CAAC;YACnC,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE;gBACpG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aAChC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IATE,CAAC;CAUN;AAbD,4DAaC;AAeD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK,CAAC,aAA2D;IAAvG;;QACE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;IAuBJ,CAAC;IArBC,gBAAgB;IACA,MAAM;QACpB,MAAM,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9G,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAC/B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAE9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,oCAAoB;oBACnB,oBAAC,kCAAe,IACd,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAC/C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,IAAI,GAAI,CACC,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AAjCD,4CAiCC","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 Popup\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { OnCancelFunc, OnValueCommitFunc, Primitives, PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport { EditorContainer, PropertyUpdatedArgs } from \"@itwin/components-react\";\r\nimport { DivWithOutsideClick, Size, SizeProps } from \"@itwin/core-react\";\r\nimport { PopupManager, PopupPropsBase } from \"./PopupManager\";\r\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup\";\r\n\r\n/** @beta */\r\nexport class InputEditorCommitHandler {\r\n constructor(\r\n public readonly onCommit: OnValueCommitFunc,\r\n ) { }\r\n\r\n public handleCommit = (args: PropertyUpdatedArgs) => {\r\n let newValue: Primitives.Value = 0;\r\n // istanbul ignore else\r\n if (args.newValue.valueFormat === PropertyValueFormat.Primitive && args.newValue.value !== undefined) {\r\n newValue = args.newValue.value;\r\n }\r\n this.onCommit(newValue);\r\n };\r\n}\r\n\r\n/** Props for popup editor\r\n * @beta */\r\nexport interface InputEditorPopupProps extends PopupPropsBase {\r\n record: PropertyRecord;\r\n onCancel: OnCancelFunc;\r\n commitHandler: InputEditorCommitHandler;\r\n}\r\n\r\n/** @internal */\r\ninterface InputEditorPopupState {\r\n size: Size;\r\n}\r\n\r\n/** Popup component for Input Editor\r\n * @alpha\r\n */\r\nexport class InputEditorPopup extends React.PureComponent<InputEditorPopupProps, InputEditorPopupState> {\r\n /** @internal */\r\n public override readonly state = {\r\n size: new Size(-1, -1),\r\n };\r\n\r\n private _onSizeKnown = (newSize: SizeProps) => {\r\n // istanbul ignore else\r\n if (!this.state.size.equals(newSize))\r\n this.setState({ size: Size.create(newSize) });\r\n };\r\n\r\n /** @internal */\r\n public override render() {\r\n const point = PopupManager.getPopupPosition(this.props.el, this.props.pt, this.props.offset, this.state.size);\r\n\r\n return (\r\n <PositionPopup key={this.props.id}\r\n point={point}\r\n onSizeKnown={this._onSizeKnown}\r\n >\r\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\r\n <PositionPopupContent>\r\n <EditorContainer\r\n propertyRecord={this.props.record}\r\n onCommit={this.props.commitHandler.handleCommit}\r\n onCancel={this.props.onCancel}\r\n setFocus={true} />\r\n </PositionPopupContent>\r\n </DivWithOutsideClick>\r\n </PositionPopup>\r\n );\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePanel.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 Popup\n */\n\n// cSpell:ignore focusvalue uiadmin\n\nimport * as React from \"react\";\nimport \"./KeyinPalettePanel.scss\";\nimport { FilteredText, Listbox, ListboxItem, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, ParseAndRunResult } from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework\";\nimport { matchesWords, OnItemExecutedFunc, SpecialKey } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { Input } from \"@itwin/itwinui-react\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n // istanbul ignore else\n if (uiSettingsStorage) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n uiSettingsStorage.deleteSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY);\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({ keyins, onKeyinExecuted, historyLength: allowedHistoryLength = 6 }: KeyinPalettePanelProps) {\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n const placeholderLabel = React.useRef(UiFramework.translate(\"keyinbrowser.placeholder\"));\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY);\n // istanbul ignore else\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter((keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n });\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n fetchState(); // eslint-disable-line @typescript-eslint/no-floating-promises\n }, [uiSettingsStorage]);\n\n // istanbul ignore next\n const storeHistoryKeyins = React.useCallback(async (value: string[]) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n const result = await uiSettingsStorage.saveSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY, value);\n if (result.status !== UiStateStorageStatus.Success) {\n const briefMessage = UiFramework.translate(\"keyinbrowser.couldNotSaveHistory\");\n const errorDetails = new NotifyMessageDetails(OutputMessagePriority.Error, briefMessage);\n IModelApp.notifications.outputMessage(errorDetails);\n }\n }, [uiSettingsStorage]);\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(...keyins.sort((a, b) => a.value.toLowerCase().localeCompare(b.value.toLowerCase())));\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `UiFramework.translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n // istanbul ignore next\n case ParseAndRunResult.BadArgumentCount:\n message = UiFramework.translate(\"keyinbrowser.incorrectArgs\");\n break;\n // istanbul ignore next\n case ParseAndRunResult.FailedToRun:\n message = UiFramework.translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n // istanbul ignore next\n {\n message = UiFramework.translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${UiFramework.translate(\"keyinbrowser.exceptionOccurred\")}: ${ex}`;\n }\n }\n\n // istanbul ignore else\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(OutputMessagePriority.Error, message, detailedMessage, OutputMessageType.Sticky);\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n // istanbul ignore next\n if (value.length < 400 && value !== ClearKeyinPaletteHistoryTool.keyin && value !== ClearKeyinPaletteHistoryTool.englishKeyin) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength)\n break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted)\n onKeyinExecuted(value);\n }\n }, [storeHistoryKeyins, onKeyinExecuted, historyKeyins, allowedHistoryLength]);\n\n const selectKeyin = React.useCallback(() => {\n // istanbul ignore else\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback((value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n }, [selectKeyin]);\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n // istanbul ignore else\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n // istanbul ignore else\n if (indexSeparator)\n return value.substring(0, indexSeparator);\n }\n // istanbul ignore next\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n // istanbul ignore else\n if (key === SpecialKey.Enter) {\n event.preventDefault();\n // istanbul ignore next\n const keyinToSend = getKeyinFromListboxValue(event.currentTarget?.dataset?.focusvalue);\n // istanbul ignore else\n if (keyinToSend) {\n if (event.ctrlKey)\n updateKeyin(keyinToSend);\n else\n await submitKeyin(keyinToSend);\n }\n }\n }, [submitKeyin, updateKeyin]);\n\n const onListboxValueChange = React.useCallback(async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n // istanbul ignore else\n if (keyin) {\n if (isControlOrCommandPressed)\n updateKeyin(keyin);\n else\n await submitKeyin(keyin);\n }\n }, [submitKeyin, updateKeyin]);\n\n const onInputValueChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n }, []);\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(currentKeyin, value.value, currentKeyin.length > 60);\n if (matches && matches.length) {\n // istanbul ignore else\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n // istanbul ignore else\n if (-1 === filteredHistory.findIndex((historyEntry: KeyinEntry) => historyEntry.value === value.value))\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (SpecialKey.Enter === event.key) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey)\n updateKeyin(filteredKeyins[0].value);\n else\n await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin)\n await submitKeyin(currentKeyin);\n }\n } else if (SpecialKey.Tab === event.key && 1 === filteredKeyins.length) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (event.key === SpecialKey.ArrowDown && filteredKeyins.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (inputRef.current) {\n const nextElement = inputRef.current.nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n\n }, [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]);\n\n const lastHistoryIndex = filteredKeyins.findIndex((entry) => (true !== entry.isHistory)) - 1;\n\n return <div className=\"uifw-command-palette-panel\">\n <Input ref={inputRef} type=\"text\" onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"} data-testid=\"command-palette-input\" onChange={onInputValueChange}\n placeholder={placeholderLabel.current} value={currentKeyin} size=\"small\"\n />\n {(filteredKeyins.length > 0) &&\n <Listbox id=\"uifw-command-sources\" className=\"map-manager-source-list\" onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange} >\n {\n filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${entry.isHistory ? \"history\" : \"registry\"}`;\n const itemClass = `uifw-command-palette-value-entry${index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"}`;\n return <ListboxItem key={`${entry.value}-${index}`} className={itemClass} value={value} >\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>;\n })\n }\n </Listbox >\n }\n </div >;\n}\n"]}
1
+ {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePanel.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 Popup\r\n */\r\n\r\n// cSpell:ignore focusvalue uiadmin\r\n\r\nimport * as React from \"react\";\r\nimport \"./KeyinPalettePanel.scss\";\r\nimport { FilteredText, Listbox, ListboxItem, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, ParseAndRunResult } from \"@itwin/core-frontend\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { matchesWords, OnItemExecutedFunc, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools\";\r\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\r\nimport { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\r\nimport { Input } from \"@itwin/itwinui-react\";\r\n\r\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\r\nconst KEYIN_HISTORY_KEY = \"historyArray\";\r\n\r\n/** @internal */\r\nexport function clearKeyinPaletteHistory() {\r\n const uiSettingsStorage = UiFramework.getUiStateStorage();\r\n // istanbul ignore else\r\n if (uiSettingsStorage) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n uiSettingsStorage.deleteSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY);\r\n }\r\n}\r\n\r\ninterface KeyinPalettePanelProps {\r\n keyins: KeyinEntry[];\r\n onKeyinExecuted?: OnItemExecutedFunc;\r\n historyLength?: number;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function KeyinPalettePanel({ keyins, onKeyinExecuted, historyLength: allowedHistoryLength = 6 }: KeyinPalettePanelProps) {\r\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\r\n const placeholderLabel = React.useRef(UiFramework.translate(\"keyinbrowser.placeholder\"));\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const keyinSeparator = \"--#--\";\r\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\r\n const uiSettingsStorage = useUiStateStorageHandler();\r\n\r\n React.useEffect(() => {\r\n async function fetchState() {\r\n const settingsResult = await uiSettingsStorage.getSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY);\r\n // istanbul ignore else\r\n if (UiStateStorageStatus.Success === settingsResult.status) {\r\n const filteredHistory = (settingsResult.setting as string[]).filter((keyin) => {\r\n const result = IModelApp.tools.parseKeyin(keyin);\r\n return result.ok;\r\n });\r\n setHistoryKeyins(filteredHistory);\r\n } else {\r\n setHistoryKeyins([]);\r\n }\r\n }\r\n\r\n fetchState(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }, [uiSettingsStorage]);\r\n\r\n // istanbul ignore next\r\n const storeHistoryKeyins = React.useCallback(async (value: string[]) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n const result = await uiSettingsStorage.saveSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY, value);\r\n if (result.status !== UiStateStorageStatus.Success) {\r\n const briefMessage = UiFramework.translate(\"keyinbrowser.couldNotSaveHistory\");\r\n const errorDetails = new NotifyMessageDetails(OutputMessagePriority.Error, briefMessage);\r\n IModelApp.notifications.outputMessage(errorDetails);\r\n }\r\n }, [uiSettingsStorage]);\r\n\r\n const allKeyins = React.useMemo(() => {\r\n const availableKeyins = [];\r\n historyKeyins.forEach((value: string) => {\r\n availableKeyins.push({ value, isHistory: true });\r\n });\r\n availableKeyins.push(...keyins.sort((a, b) => a.value.toLowerCase().localeCompare(b.value.toLowerCase())));\r\n return availableKeyins;\r\n }, [historyKeyins, keyins]);\r\n\r\n const submitKeyin = React.useCallback(async (value: string) => {\r\n let detailedMessage: string | undefined;\r\n let message: string | undefined;\r\n try {\r\n switch (await IModelApp.tools.parseAndRun(value)) {\r\n case ParseAndRunResult.ToolNotFound:\r\n message = `UiFramework.translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\r\n break;\r\n // istanbul ignore next\r\n case ParseAndRunResult.BadArgumentCount:\r\n message = UiFramework.translate(\"keyinbrowser.incorrectArgs\");\r\n break;\r\n // istanbul ignore next\r\n case ParseAndRunResult.FailedToRun:\r\n message = UiFramework.translate(\"keyinbrowser.failedToRun\");\r\n break;\r\n }\r\n } catch (ex) {\r\n // istanbul ignore next\r\n {\r\n message = UiFramework.translate(\"keyinbrowser.exceptionOccurred\");\r\n detailedMessage = `${UiFramework.translate(\"keyinbrowser.exceptionOccurred\")}: ${ex}`;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (undefined !== message) {\r\n const errorDetails = new NotifyMessageDetails(OutputMessagePriority.Error, message, detailedMessage, OutputMessageType.Sticky);\r\n IModelApp.notifications.outputMessage(errorDetails);\r\n } else {\r\n // istanbul ignore next\r\n if (value.length < 400 && value !== ClearKeyinPaletteHistoryTool.keyin && value !== ClearKeyinPaletteHistoryTool.englishKeyin) {\r\n const newHistoryEntries: string[] = [value];\r\n for (const entry of historyKeyins) {\r\n if (entry !== value) {\r\n newHistoryEntries.push(entry);\r\n if (newHistoryEntries.length >= allowedHistoryLength)\r\n break;\r\n }\r\n }\r\n await storeHistoryKeyins(newHistoryEntries);\r\n }\r\n\r\n // close the popup by processing the supplied onKeyinExecuted function\r\n if (onKeyinExecuted)\r\n onKeyinExecuted(value);\r\n }\r\n }, [storeHistoryKeyins, onKeyinExecuted, historyKeyins, allowedHistoryLength]);\r\n\r\n const selectKeyin = React.useCallback(() => {\r\n // istanbul ignore else\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\r\n }\r\n }, [inputRef]);\r\n\r\n const updateKeyin = React.useCallback((value: string) => {\r\n setCurrentKeyin(value);\r\n selectKeyin();\r\n }, [selectKeyin]);\r\n\r\n const getKeyinFromListboxValue = (value: string | undefined) => {\r\n // istanbul ignore else\r\n if (value) {\r\n const indexSeparator = value.search(keyinSeparator);\r\n // istanbul ignore else\r\n if (indexSeparator)\r\n return value.substring(0, indexSeparator);\r\n }\r\n // istanbul ignore next\r\n return undefined;\r\n };\r\n\r\n const handleKeypressOnKeyinsList = React.useCallback(async (event: React.KeyboardEvent<HTMLUListElement>) => {\r\n const key = event.key;\r\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\r\n // assume user wants to execute the entry.\r\n // istanbul ignore else\r\n if (key === SpecialKey.Enter) {\r\n event.preventDefault();\r\n // istanbul ignore next\r\n const keyinToSend = getKeyinFromListboxValue(event.currentTarget?.dataset?.focusvalue);\r\n // istanbul ignore else\r\n if (keyinToSend) {\r\n if (event.ctrlKey)\r\n updateKeyin(keyinToSend);\r\n else\r\n await submitKeyin(keyinToSend);\r\n }\r\n }\r\n }, [submitKeyin, updateKeyin]);\r\n\r\n const onListboxValueChange = React.useCallback(async (value: string, isControlOrCommandPressed?: boolean) => {\r\n const keyin = getKeyinFromListboxValue(value);\r\n // istanbul ignore else\r\n if (keyin) {\r\n if (isControlOrCommandPressed)\r\n updateKeyin(keyin);\r\n else\r\n await submitKeyin(keyin);\r\n }\r\n }, [submitKeyin, updateKeyin]);\r\n\r\n const onInputValueChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setCurrentKeyin(event.target.value);\r\n }, []);\r\n\r\n const filteredKeyins = React.useMemo(() => {\r\n const filteredHistory: KeyinEntry[] = [];\r\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\r\n return allKeyins;\r\n } else {\r\n const newKeyinSet: KeyinEntry[] = [];\r\n allKeyins.forEach((value) => {\r\n if (value.value.length >= currentKeyin.length) {\r\n // Force contiguous searches if key-in is over 60 characters long for performance.\r\n const matches = matchesWords(currentKeyin, value.value, currentKeyin.length > 60);\r\n if (matches && matches.length) {\r\n // istanbul ignore else\r\n if (value.isHistory) {\r\n filteredHistory.push(value);\r\n newKeyinSet.push({ ...value, matches });\r\n } else {\r\n // only add entry if no match in filtered history\r\n // istanbul ignore else\r\n if (-1 === filteredHistory.findIndex((historyEntry: KeyinEntry) => historyEntry.value === value.value))\r\n newKeyinSet.push({ ...value, matches });\r\n }\r\n }\r\n }\r\n });\r\n return newKeyinSet;\r\n }\r\n }, [allKeyins, currentKeyin]);\r\n\r\n const onInputValueKeyDown = React.useCallback(async (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (SpecialKey.Enter === event.key) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // istanbul ignore else\r\n if (1 === filteredKeyins.length) {\r\n if (event.ctrlKey)\r\n updateKeyin(filteredKeyins[0].value);\r\n else\r\n await submitKeyin(filteredKeyins[0].value);\r\n } else {\r\n if (currentKeyin)\r\n await submitKeyin(currentKeyin);\r\n }\r\n } else if (SpecialKey.Tab === event.key && 1 === filteredKeyins.length) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n updateKeyin(filteredKeyins[0].value);\r\n } else {\r\n if (event.key === SpecialKey.ArrowDown && filteredKeyins.length > 0) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // istanbul ignore else\r\n if (inputRef.current) {\r\n const nextElement = inputRef.current.nextElementSibling as HTMLElement;\r\n nextElement && nextElement.focus();\r\n }\r\n }\r\n }\r\n\r\n }, [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]);\r\n\r\n const lastHistoryIndex = filteredKeyins.findIndex((entry) => (true !== entry.isHistory)) - 1;\r\n\r\n return <div className=\"uifw-command-palette-panel\">\r\n <Input ref={inputRef} type=\"text\" onKeyDown={onInputValueKeyDown}\r\n className={\"uifw-command-palette-input\"} data-testid=\"command-palette-input\" onChange={onInputValueChange}\r\n placeholder={placeholderLabel.current} value={currentKeyin} size=\"small\"\r\n />\r\n {(filteredKeyins.length > 0) &&\r\n <Listbox id=\"uifw-command-sources\" className=\"map-manager-source-list\" onKeyDown={handleKeypressOnKeyinsList}\r\n onListboxValueChange={onListboxValueChange} >\r\n {\r\n filteredKeyins.map((entry, index) => {\r\n const value = `${entry.value}${keyinSeparator}${entry.isHistory ? \"history\" : \"registry\"}`;\r\n const itemClass = `uifw-command-palette-value-entry${index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"}`;\r\n return <ListboxItem key={`${entry.value}-${index}`} className={itemClass} value={value} >\r\n <FilteredText value={entry.value} matches={entry.matches} />\r\n </ListboxItem>;\r\n })\r\n }\r\n </Listbox >\r\n }\r\n </div >;\r\n}\r\n"]}
@@ -1,31 +1,31 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
6
- @import "~@itwin/core-react/lib/cjs/core-react/z-index";
7
-
8
- .uifw-command-palette-popup-container {
9
- @include uicore-z-index(keyin-palette-overlay);
10
-
11
- box-sizing: border-box;
12
- background: $buic-background-control;
13
- color: var(--iui-color-text);
14
- -webkit-box-shadow: 0 3px 6px $buic-popup-boxshadow;
15
- box-shadow: 0px 3px 6px $buic-popup-boxshadow;
16
-
17
- .uifw-command-palette-panel {
18
- margin: 4px;
19
- width: 30vw;
20
- min-width: 20em;
21
- max-height: 50vh;
22
- display: flex;
23
- flex-direction: column;
24
- }
25
-
26
- .uifw-history-bottom-border {
27
- border-bottom-width: 1px;
28
- border-bottom-style: solid;
29
- border-bottom-color: $buic-foreground-disabled;
30
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/z-index";
7
+
8
+ .uifw-command-palette-popup-container {
9
+ @include uicore-z-index(keyin-palette-overlay);
10
+
11
+ box-sizing: border-box;
12
+ background: $buic-background-control;
13
+ color: var(--iui-color-text);
14
+ -webkit-box-shadow: 0 3px 6px $buic-popup-boxshadow;
15
+ box-shadow: 0px 3px 6px $buic-popup-boxshadow;
16
+
17
+ .uifw-command-palette-panel {
18
+ margin: 4px;
19
+ width: 30vw;
20
+ min-width: 20em;
21
+ max-height: 50vh;
22
+ display: flex;
23
+ flex-direction: column;
24
+ }
25
+
26
+ .uifw-history-bottom-border {
27
+ border-bottom-width: 1px;
28
+ border-bottom-style: solid;
29
+ border-bottom-color: $buic-foreground-disabled;
30
+ }
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KeyinPalettePopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,0DAAqF;AACrF,kDAA2F;AAC3F,mDAAgD;AAChD,2DAAwD;AAaxD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAA0B;IACpG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,OAAkB,EAAE,EAAE;QAC3D,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAC5B,YAAY,CAAC,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAA0C,EAAQ,EAAE;QAC3F,QAAQ,KAAK,CAAC,GAAG,EAAE;YACjB,KAAK,2BAAU,CAAC,MAAM;gBACpB,MAAM,EAAE,CAAC;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;SACT;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IACpF,IAAI,KAAK,GAAG,IAAI,kBAAK,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5D,uBAAuB;IACvB,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,EAAE,EACpB,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW;QAExB,oBAAC,gCAAmB,IAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;YACrE,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;gBACpD,oBAAC,qCAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,GAAI,CAC5D,CACQ,CACR,CACjB,CAAC;AACJ,CAAC;AAzCD,8CAyCC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { OnCancelFunc, OnItemExecutedFunc, SpecialKey } from \"@itwin/appui-abstract\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size, SizeProps } from \"@itwin/core-react\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { KeyinPalettePanel } from \"./KeyinPalettePanel\";\nimport { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\n\n/** Props defining KeyinPalettePopup component\n * @public */\nexport interface KeyinPalettePopupProps {\n id: string;\n el: HTMLElement;\n keyins: KeyinEntry[];\n onCancel?: OnCancelFunc;\n onItemExecuted?: OnItemExecutedFunc;\n}\n\n/** Keyin Palette Popup Component\n * @public\n */\nexport function KeyinPalettePopup({ el, id, keyins, onCancel, onItemExecuted }: KeyinPalettePopupProps) {\n const [popupSize, setPopupSize] = React.useState(new Size(-1, -1));\n\n const onSizeKnown = React.useCallback((newSize: SizeProps) => {\n // istanbul ignore else\n if (!popupSize.equals(newSize))\n setPopupSize(Size.create(newSize));\n }, [popupSize]);\n\n const cancel = React.useCallback(() => {\n onCancel && onCancel();\n }, [onCancel]);\n\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLDivElement>): void => {\n switch (event.key) {\n case SpecialKey.Escape:\n cancel();\n event.preventDefault();\n break;\n }\n }, [cancel]);\n\n const xMid = el.getBoundingClientRect().left + el.getBoundingClientRect().width / 2;\n let point = new Point(xMid, el.getBoundingClientRect().top);\n // istanbul ignore next\n if (popupSize.width > 0)\n point = point.offsetX(popupSize.width / (-2));\n\n return (\n <PositionPopup key={id}\n className=\"uifw-command-palette-popup-container\"\n point={point}\n onSizeKnown={onSizeKnown}\n >\n <DivWithOutsideClick onOutsideClick={onCancel} onKeyDown={handleKeyDown}>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <KeyinPalettePanel keyins={keyins} onKeyinExecuted={onItemExecuted} />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n}\n"]}
1
+ {"version":3,"file":"KeyinPalettePopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePopup.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,0DAAqF;AACrF,kDAA2F;AAC3F,mDAAgD;AAChD,2DAAwD;AAaxD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAA0B;IACpG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,OAAkB,EAAE,EAAE;QAC3D,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAC5B,YAAY,CAAC,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAA0C,EAAQ,EAAE;QAC3F,QAAQ,KAAK,CAAC,GAAG,EAAE;YACjB,KAAK,2BAAU,CAAC,MAAM;gBACpB,MAAM,EAAE,CAAC;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;SACT;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IACpF,IAAI,KAAK,GAAG,IAAI,kBAAK,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5D,uBAAuB;IACvB,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,CACL,oBAAC,6BAAa,IAAC,GAAG,EAAE,EAAE,EACpB,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW;QAExB,oBAAC,gCAAmB,IAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;YACrE,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;gBACpD,oBAAC,qCAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,GAAI,CAC5D,CACQ,CACR,CACjB,CAAC;AACJ,CAAC;AAzCD,8CAyCC","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 Popup\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { OnCancelFunc, OnItemExecutedFunc, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { DivWithOutsideClick, FocusTrap, Point, Size, SizeProps } from \"@itwin/core-react\";\r\nimport { PositionPopup } from \"./PositionPopup\";\r\nimport { KeyinPalettePanel } from \"./KeyinPalettePanel\";\r\nimport { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\r\n\r\n/** Props defining KeyinPalettePopup component\r\n * @public */\r\nexport interface KeyinPalettePopupProps {\r\n id: string;\r\n el: HTMLElement;\r\n keyins: KeyinEntry[];\r\n onCancel?: OnCancelFunc;\r\n onItemExecuted?: OnItemExecutedFunc;\r\n}\r\n\r\n/** Keyin Palette Popup Component\r\n * @public\r\n */\r\nexport function KeyinPalettePopup({ el, id, keyins, onCancel, onItemExecuted }: KeyinPalettePopupProps) {\r\n const [popupSize, setPopupSize] = React.useState(new Size(-1, -1));\r\n\r\n const onSizeKnown = React.useCallback((newSize: SizeProps) => {\r\n // istanbul ignore else\r\n if (!popupSize.equals(newSize))\r\n setPopupSize(Size.create(newSize));\r\n }, [popupSize]);\r\n\r\n const cancel = React.useCallback(() => {\r\n onCancel && onCancel();\r\n }, [onCancel]);\r\n\r\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLDivElement>): void => {\r\n switch (event.key) {\r\n case SpecialKey.Escape:\r\n cancel();\r\n event.preventDefault();\r\n break;\r\n }\r\n }, [cancel]);\r\n\r\n const xMid = el.getBoundingClientRect().left + el.getBoundingClientRect().width / 2;\r\n let point = new Point(xMid, el.getBoundingClientRect().top);\r\n // istanbul ignore next\r\n if (popupSize.width > 0)\r\n point = point.offsetX(popupSize.width / (-2));\r\n\r\n return (\r\n <PositionPopup key={id}\r\n className=\"uifw-command-palette-popup-container\"\r\n point={point}\r\n onSizeKnown={onSizeKnown}\r\n >\r\n <DivWithOutsideClick onOutsideClick={onCancel} onKeyDown={handleKeyDown}>\r\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\r\n <KeyinPalettePanel keyins={keyins} onKeyinExecuted={onItemExecuted} />\r\n </FocusTrap>\r\n </DivWithOutsideClick>\r\n </PositionPopup>\r\n );\r\n}\r\n"]}