@xh/hoist 56.3.0 → 56.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/CHANGELOG.md +47 -1
  2. package/README.md +1 -1
  3. package/admin/App.scss +1 -1
  4. package/admin/App.ts +6 -0
  5. package/admin/AppComponent.ts +1 -1
  6. package/admin/AppModel.ts +1 -1
  7. package/admin/columns/Core.ts +1 -1
  8. package/admin/columns/Rest.ts +1 -1
  9. package/admin/columns/Tracking.ts +1 -1
  10. package/admin/columns/User.ts +1 -1
  11. package/admin/columns/UserData.ts +1 -1
  12. package/admin/differ/Differ.scss +1 -1
  13. package/admin/differ/Differ.ts +1 -1
  14. package/admin/differ/DifferDetail.ts +1 -1
  15. package/admin/differ/DifferDetailModel.ts +1 -1
  16. package/admin/differ/DifferModel.ts +1 -1
  17. package/admin/regroup/RegroupDialog.ts +1 -1
  18. package/admin/regroup/RegroupDialogModel.ts +1 -1
  19. package/admin/tabs/activity/ActivityTab.ts +1 -1
  20. package/admin/tabs/activity/aggregators/RangeAggregator.ts +1 -1
  21. package/admin/tabs/activity/clienterrors/ClientErrorDetail.ts +1 -1
  22. package/admin/tabs/activity/clienterrors/ClientErrorsModel.ts +1 -1
  23. package/admin/tabs/activity/clienterrors/ClientErrorsPanel.ts +1 -1
  24. package/admin/tabs/activity/feedback/FeedbackPanel.ts +1 -1
  25. package/admin/tabs/activity/tracking/ActivityTrackingModel.ts +1 -1
  26. package/admin/tabs/activity/tracking/ActivityTrackingPanel.ts +1 -1
  27. package/admin/tabs/activity/tracking/charts/ChartsModel.ts +1 -1
  28. package/admin/tabs/activity/tracking/charts/ChartsPanel.ts +1 -1
  29. package/admin/tabs/activity/tracking/detail/ActivityDetailModel.ts +1 -1
  30. package/admin/tabs/activity/tracking/detail/ActivityDetailView.ts +1 -1
  31. package/admin/tabs/general/GeneralTab.ts +1 -1
  32. package/admin/tabs/general/about/AboutPanel.scss +1 -1
  33. package/admin/tabs/general/about/AboutPanel.ts +1 -1
  34. package/admin/tabs/general/alertBanner/AlertBannerModel.ts +1 -1
  35. package/admin/tabs/general/alertBanner/AlertBannerPanel.scss +1 -1
  36. package/admin/tabs/general/alertBanner/AlertBannerPanel.ts +1 -1
  37. package/admin/tabs/general/config/ConfigPanel.ts +1 -1
  38. package/admin/tabs/general/config/ConfigPanelModel.ts +1 -1
  39. package/admin/tabs/general/users/UserModel.ts +1 -1
  40. package/admin/tabs/general/users/UserPanel.ts +1 -1
  41. package/admin/tabs/monitor/MonitorColumns.ts +1 -1
  42. package/admin/tabs/monitor/MonitorEditorPanel.ts +1 -1
  43. package/admin/tabs/monitor/MonitorResultsModel.ts +1 -1
  44. package/admin/tabs/monitor/MonitorResultsPanel.scss +1 -1
  45. package/admin/tabs/monitor/MonitorResultsPanel.ts +1 -1
  46. package/admin/tabs/monitor/MonitorResultsToolbar.ts +1 -1
  47. package/admin/tabs/monitor/MonitorTab.ts +1 -1
  48. package/admin/tabs/monitor/Tile.scss +1 -1
  49. package/admin/tabs/monitor/Tile.ts +1 -1
  50. package/admin/tabs/server/ServerTab.ts +1 -1
  51. package/admin/tabs/server/ehcache/EhCacheModel.ts +1 -1
  52. package/admin/tabs/server/ehcache/EhCachePanel.ts +1 -1
  53. package/admin/tabs/server/environment/ServerEnvModel.ts +1 -1
  54. package/admin/tabs/server/environment/ServerEnvPanel.ts +1 -1
  55. package/admin/tabs/server/logLevel/LogLevelColumns.ts +1 -1
  56. package/admin/tabs/server/logLevel/LogLevelPanel.ts +1 -1
  57. package/admin/tabs/server/logViewer/LogDisplay.ts +28 -8
  58. package/admin/tabs/server/logViewer/LogDisplayModel.ts +12 -3
  59. package/admin/tabs/server/logViewer/LogViewer.scss +11 -1
  60. package/admin/tabs/server/logViewer/LogViewer.ts +1 -1
  61. package/admin/tabs/server/logViewer/LogViewerModel.ts +1 -1
  62. package/admin/tabs/server/memory/MemoryMonitorModel.ts +1 -1
  63. package/admin/tabs/server/memory/MemoryMonitorPanel.ts +1 -1
  64. package/admin/tabs/server/services/ServiceModel.ts +1 -1
  65. package/admin/tabs/server/services/ServicePanel.ts +1 -1
  66. package/admin/tabs/server/websocket/WebSocketColumns.ts +1 -1
  67. package/admin/tabs/server/websocket/WebSocketModel.ts +1 -1
  68. package/admin/tabs/server/websocket/WebSocketPanel.ts +1 -1
  69. package/admin/tabs/userData/JsonBlobColumns.ts +1 -1
  70. package/admin/tabs/userData/JsonBlobModel.ts +1 -1
  71. package/admin/tabs/userData/JsonBlobPanel.ts +1 -1
  72. package/admin/tabs/userData/PreferenceModel.ts +1 -1
  73. package/admin/tabs/userData/PreferencePanel.ts +1 -1
  74. package/admin/tabs/userData/UserDataTab.ts +1 -1
  75. package/admin/tabs/userData/UserPreferencePanel.ts +1 -1
  76. package/appcontainer/AboutDialogModel.ts +1 -1
  77. package/appcontainer/AppContainerModel.ts +1 -1
  78. package/appcontainer/AppOption.ts +1 -1
  79. package/appcontainer/BannerModel.ts +1 -1
  80. package/appcontainer/BannerSourceModel.ts +1 -1
  81. package/appcontainer/ChangelogDialogModel.ts +1 -1
  82. package/appcontainer/ErrorBoundary.ts +1 -1
  83. package/appcontainer/ExceptionDialogModel.ts +1 -1
  84. package/appcontainer/FeedbackDialogModel.ts +1 -1
  85. package/appcontainer/ImpersonationBarModel.ts +1 -1
  86. package/appcontainer/MessageModel.ts +1 -1
  87. package/appcontainer/MessageSourceModel.ts +1 -1
  88. package/appcontainer/OptionsDialogModel.ts +1 -1
  89. package/appcontainer/SizingModeModel.ts +1 -1
  90. package/appcontainer/ThemeModel.ts +1 -1
  91. package/appcontainer/ToastModel.ts +1 -1
  92. package/appcontainer/ToastSourceModel.ts +1 -1
  93. package/appcontainer/ViewportSizeModel.ts +1 -1
  94. package/appcontainer/login/LoginPanelModel.ts +1 -1
  95. package/cmp/ag-grid/AgGrid.scss +1 -1
  96. package/cmp/ag-grid/AgGrid.ts +1 -1
  97. package/cmp/ag-grid/AgGridModel.ts +1 -1
  98. package/cmp/badge/Badge.ts +1 -1
  99. package/cmp/chart/Chart.ts +1 -1
  100. package/cmp/chart/ChartModel.ts +1 -1
  101. package/cmp/chart/impl/copyToClipboard.ts +1 -1
  102. package/cmp/chart/impl/zoomout.ts +1 -1
  103. package/cmp/chart/theme/Dark.ts +1 -1
  104. package/cmp/chart/theme/Light.ts +1 -1
  105. package/cmp/clock/Clock.ts +1 -1
  106. package/cmp/dataview/DataView.scss +1 -1
  107. package/cmp/dataview/DataView.ts +25 -9
  108. package/cmp/dataview/DataViewModel.ts +1 -1
  109. package/cmp/filter/FilterChooserFieldSpec.ts +1 -1
  110. package/cmp/filter/FilterChooserModel.ts +1 -1
  111. package/cmp/filter/impl/Option.ts +1 -1
  112. package/cmp/filter/impl/QueryEngine.ts +1 -1
  113. package/cmp/form/BaseFormFieldProps.ts +1 -1
  114. package/cmp/form/Form.ts +1 -1
  115. package/cmp/form/FormModel.ts +1 -1
  116. package/cmp/form/field/BaseFieldModel.ts +1 -1
  117. package/cmp/form/field/FieldModel.ts +1 -1
  118. package/cmp/form/field/SubformsFieldModel.ts +1 -1
  119. package/cmp/form/index.ts +1 -1
  120. package/cmp/grid/Grid.scss +1 -1
  121. package/cmp/grid/Grid.ts +3 -3
  122. package/cmp/grid/GridAutosizeOptions.ts +1 -1
  123. package/cmp/grid/GridContextMenu.ts +1 -1
  124. package/cmp/grid/GridModel.ts +12 -7
  125. package/cmp/grid/GridSorter.ts +1 -1
  126. package/cmp/grid/Types.ts +1 -1
  127. package/cmp/grid/columns/Column.ts +2 -2
  128. package/cmp/grid/columns/ColumnGroup.ts +1 -1
  129. package/cmp/grid/columns/Core.ts +1 -1
  130. package/cmp/grid/columns/DatesTimes.ts +1 -1
  131. package/cmp/grid/columns/index.ts +1 -1
  132. package/cmp/grid/enums/ExcelFormat.ts +1 -1
  133. package/cmp/grid/enums/GridAutosizeMode.ts +1 -1
  134. package/cmp/grid/enums/TreeStyle.ts +1 -1
  135. package/cmp/grid/filter/GridFilterFieldSpec.ts +1 -1
  136. package/cmp/grid/filter/GridFilterModel.ts +1 -1
  137. package/cmp/grid/helpers/GridCountLabel.ts +1 -1
  138. package/cmp/grid/impl/ColumnGroupHeader.ts +1 -1
  139. package/cmp/grid/impl/ColumnHeader.ts +1 -1
  140. package/cmp/grid/impl/ColumnWidthCalculator.ts +1 -1
  141. package/cmp/grid/impl/GridPersistenceModel.ts +1 -1
  142. package/cmp/grid/impl/MenuSupport.ts +1 -1
  143. package/cmp/grid/impl/RowKeyNavSupport.ts +1 -1
  144. package/cmp/grid/impl/Utils.ts +6 -0
  145. package/cmp/grid/index.ts +1 -1
  146. package/cmp/grid/renderers/MultiFieldRenderer.ts +1 -1
  147. package/cmp/grid/renderers/TagsRenderer.ts +1 -1
  148. package/cmp/grouping/GroupingChooserModel.ts +25 -9
  149. package/cmp/input/HoistInput.scss +1 -1
  150. package/cmp/input/HoistInputModel.ts +1 -1
  151. package/cmp/input/HoistInputProps.ts +1 -1
  152. package/cmp/layout/Box.ts +1 -1
  153. package/cmp/layout/Frame.ts +1 -1
  154. package/cmp/layout/Placeholder.ts +1 -1
  155. package/cmp/layout/Spacer.ts +1 -1
  156. package/cmp/layout/Tags.ts +1 -1
  157. package/cmp/layout/TileFrame.scss +1 -1
  158. package/cmp/layout/TileFrame.ts +1 -1
  159. package/cmp/layout/Viewport.ts +1 -1
  160. package/cmp/pinpad/PinPad.ts +1 -1
  161. package/cmp/pinpad/PinPadModel.ts +1 -1
  162. package/cmp/relativetimestamp/RelativeTimestamp.ts +1 -1
  163. package/cmp/spinner/Spinner.ts +1 -1
  164. package/cmp/store/StoreCountLabel.ts +1 -1
  165. package/cmp/store/StoreFilterField.ts +1 -1
  166. package/cmp/store/impl/StoreFilterFieldImplModel.ts +1 -1
  167. package/cmp/tab/TabContainer.ts +1 -1
  168. package/cmp/tab/TabContainerModel.ts +1 -1
  169. package/cmp/tab/TabModel.ts +1 -1
  170. package/cmp/tab/TabSwitcherProps.ts +6 -0
  171. package/cmp/websocket/WebSocketIndicator.ts +1 -1
  172. package/core/AppSpec.ts +1 -3
  173. package/core/AppState.ts +1 -1
  174. package/core/HoistAppModel.ts +1 -1
  175. package/core/HoistBase.ts +2 -2
  176. package/core/HoistBaseDecorators.ts +1 -1
  177. package/core/HoistComponent.ts +1 -1
  178. package/core/HoistProps.ts +1 -1
  179. package/core/HoistService.ts +1 -1
  180. package/core/RefreshContextView.ts +1 -1
  181. package/core/RouterModel.ts +1 -1
  182. package/core/TaskObserver.ts +1 -1
  183. package/core/XH.ts +1 -1
  184. package/core/elem.ts +1 -1
  185. package/core/enums/RefreshMode.ts +1 -1
  186. package/core/enums/RenderMode.ts +1 -1
  187. package/core/enums/SizingMode.ts +1 -1
  188. package/core/exception/Exception.ts +1 -1
  189. package/core/exception/ExceptionHandler.ts +1 -1
  190. package/core/exception/Types.ts +6 -0
  191. package/core/impl/InstallServices.ts +1 -1
  192. package/core/impl/InstanceManager.ts +1 -1
  193. package/core/impl/PlatformManager.ts +1 -1
  194. package/core/load/LoadSpec.ts +1 -1
  195. package/core/load/LoadSupport.ts +1 -1
  196. package/core/load/Loadable.ts +1 -1
  197. package/core/model/CreatesSpec.ts +1 -1
  198. package/core/model/HoistModel.ts +1 -1
  199. package/core/model/Hooks.ts +3 -3
  200. package/core/model/ManagedRefreshContextModel.ts +1 -1
  201. package/core/model/ModelLookup.ts +1 -1
  202. package/core/model/ModelSelector.ts +1 -1
  203. package/core/model/ModelSpec.ts +1 -1
  204. package/core/model/RefreshContextModel.ts +1 -1
  205. package/core/model/RootRefreshContextModel.ts +1 -1
  206. package/core/model/UsesSpec.ts +1 -1
  207. package/core/persist/CustomProvider.ts +1 -1
  208. package/core/persist/DashViewProvider.ts +1 -1
  209. package/core/persist/LocalStorageProvider.ts +1 -1
  210. package/core/persist/PersistOptions.ts +1 -1
  211. package/core/persist/PersistenceProvider.ts +1 -1
  212. package/core/persist/PrefProvider.ts +1 -1
  213. package/core/types/Interfaces.ts +1 -1
  214. package/core/types/Types.ts +1 -1
  215. package/data/Field.ts +1 -1
  216. package/data/RecordAction.ts +1 -1
  217. package/data/Store.ts +1 -1
  218. package/data/StoreRecord.ts +1 -1
  219. package/data/StoreSelectionModel.ts +1 -1
  220. package/data/UrlStore.ts +1 -1
  221. package/data/cube/BucketSpec.ts +1 -1
  222. package/data/cube/Cube.ts +2 -2
  223. package/data/cube/CubeField.ts +1 -1
  224. package/data/cube/Query.ts +1 -1
  225. package/data/cube/View.ts +1 -1
  226. package/data/cube/aggregate/AggregationContext.ts +1 -1
  227. package/data/cube/aggregate/Aggregator.ts +1 -1
  228. package/data/cube/aggregate/AverageAggregator.ts +1 -1
  229. package/data/cube/aggregate/AverageStrictAggregator.ts +1 -1
  230. package/data/cube/aggregate/ChildCountAggregator.ts +1 -1
  231. package/data/cube/aggregate/LeafCountAggregator.ts +1 -1
  232. package/data/cube/aggregate/MaxAggregator.ts +1 -1
  233. package/data/cube/aggregate/MinAggregator.ts +1 -1
  234. package/data/cube/aggregate/NullAggregator.ts +1 -1
  235. package/data/cube/aggregate/SingleAggregator.ts +1 -1
  236. package/data/cube/aggregate/SumAggregator.ts +1 -1
  237. package/data/cube/aggregate/SumStrictAggregator.ts +1 -1
  238. package/data/cube/aggregate/UniqueAggregator.ts +1 -1
  239. package/data/cube/row/AggregateRow.ts +1 -1
  240. package/data/cube/row/BaseRow.ts +1 -1
  241. package/data/cube/row/BucketRow.ts +1 -1
  242. package/data/cube/row/LeafRow.ts +1 -1
  243. package/data/cube/row/RowUpdate.ts +1 -1
  244. package/data/filter/BaseFilterFieldSpec.ts +1 -1
  245. package/data/filter/CompoundFilter.ts +1 -1
  246. package/data/filter/FieldFilter.ts +41 -55
  247. package/data/filter/Filter.ts +1 -1
  248. package/data/filter/FunctionFilter.ts +1 -1
  249. package/data/filter/Types.ts +1 -1
  250. package/data/filter/Utils.ts +1 -1
  251. package/data/impl/RecordSet.ts +1 -1
  252. package/data/impl/RecordValidator.ts +1 -1
  253. package/data/impl/StoreValidator.ts +1 -1
  254. package/data/index.ts +1 -1
  255. package/data/validation/Rule.ts +1 -1
  256. package/data/validation/ValidationState.ts +1 -1
  257. package/data/validation/constraints.ts +1 -1
  258. package/deprecated/index.ts +1 -1
  259. package/desktop/appcontainer/AboutDialog.scss +1 -1
  260. package/desktop/appcontainer/AboutDialog.ts +1 -1
  261. package/desktop/appcontainer/AppContainer.ts +1 -1
  262. package/desktop/appcontainer/Banner.scss +1 -1
  263. package/desktop/appcontainer/Banner.ts +1 -1
  264. package/desktop/appcontainer/ChangelogDialog.ts +1 -1
  265. package/desktop/appcontainer/ExceptionDialog.scss +1 -1
  266. package/desktop/appcontainer/ExceptionDialog.ts +1 -1
  267. package/desktop/appcontainer/ExceptionDialogDetails.ts +1 -1
  268. package/desktop/appcontainer/FeedbackDialog.ts +1 -1
  269. package/desktop/appcontainer/IdlePanel.scss +1 -1
  270. package/desktop/appcontainer/IdlePanel.ts +1 -1
  271. package/desktop/appcontainer/ImpersonationBar.ts +1 -1
  272. package/desktop/appcontainer/LockoutPanel.scss +1 -1
  273. package/desktop/appcontainer/LockoutPanel.ts +1 -1
  274. package/desktop/appcontainer/LoginPanel.scss +1 -1
  275. package/desktop/appcontainer/LoginPanel.ts +1 -1
  276. package/desktop/appcontainer/Message.scss +1 -1
  277. package/desktop/appcontainer/Message.ts +1 -1
  278. package/desktop/appcontainer/MessageSource.ts +1 -1
  279. package/desktop/appcontainer/OptionsDialog.scss +1 -1
  280. package/desktop/appcontainer/OptionsDialog.ts +1 -1
  281. package/desktop/appcontainer/SuspendPanel.scss +1 -1
  282. package/desktop/appcontainer/SuspendPanel.ts +1 -1
  283. package/desktop/appcontainer/Toast.scss +1 -1
  284. package/desktop/appcontainer/ToastSource.ts +1 -1
  285. package/desktop/appcontainer/VersionBar.scss +1 -1
  286. package/desktop/appcontainer/VersionBar.ts +1 -1
  287. package/desktop/appcontainer/index.ts +1 -1
  288. package/desktop/cmp/appOption/AutoRefreshAppOption.ts +1 -1
  289. package/desktop/cmp/appOption/SizingModeAppOption.ts +1 -1
  290. package/desktop/cmp/appOption/ThemeAppOption.ts +1 -1
  291. package/desktop/cmp/appbar/AppBar.scss +1 -1
  292. package/desktop/cmp/appbar/AppBar.ts +1 -1
  293. package/desktop/cmp/appbar/AppBarSeparator.ts +1 -1
  294. package/desktop/cmp/button/AppMenuButton.ts +1 -1
  295. package/desktop/cmp/button/Button.scss +1 -1
  296. package/desktop/cmp/button/Button.ts +1 -1
  297. package/desktop/cmp/button/ButtonGroup.ts +1 -1
  298. package/desktop/cmp/button/ColAutosizeButton.ts +1 -1
  299. package/desktop/cmp/button/ColChooserButton.ts +1 -1
  300. package/desktop/cmp/button/DashCanvasAddViewButton.ts +1 -1
  301. package/desktop/cmp/button/ExportButton.ts +1 -1
  302. package/desktop/cmp/button/FeedbackButton.ts +1 -1
  303. package/desktop/cmp/button/LaunchAdminButton.ts +1 -1
  304. package/desktop/cmp/button/LogoutButton.ts +1 -1
  305. package/desktop/cmp/button/ModalToggleButton.ts +1 -1
  306. package/desktop/cmp/button/OptionsButton.ts +1 -1
  307. package/desktop/cmp/button/RefreshButton.ts +1 -1
  308. package/desktop/cmp/button/RestoreDefaultsButton.ts +1 -1
  309. package/desktop/cmp/button/ThemeToggleButton.ts +1 -1
  310. package/desktop/cmp/button/WhatsNewButton.ts +1 -1
  311. package/desktop/cmp/clipboard/ClipboardButton.ts +1 -1
  312. package/desktop/cmp/clipboard/ClipboardMenuItem.ts +1 -1
  313. package/desktop/cmp/contextmenu/ContextMenu.ts +1 -1
  314. package/desktop/cmp/dash/DashConfig.ts +1 -1
  315. package/desktop/cmp/dash/DashModel.ts +1 -1
  316. package/desktop/cmp/dash/DashViewModel.ts +1 -1
  317. package/desktop/cmp/dash/DashViewSpec.ts +1 -1
  318. package/desktop/cmp/dash/canvas/DashCanvas.ts +1 -1
  319. package/desktop/cmp/dash/canvas/DashCanvasModel.ts +1 -1
  320. package/desktop/cmp/dash/canvas/DashCanvasViewModel.ts +1 -1
  321. package/desktop/cmp/dash/canvas/DashCanvasViewSpec.ts +1 -1
  322. package/desktop/cmp/dash/canvas/impl/DashCanvasContextMenu.ts +1 -1
  323. package/desktop/cmp/dash/canvas/impl/DashCanvasView.ts +1 -1
  324. package/desktop/cmp/dash/canvas/impl/utils.ts +1 -1
  325. package/desktop/cmp/dash/container/DashContainer.ts +1 -1
  326. package/desktop/cmp/dash/container/DashContainerModel.ts +1 -1
  327. package/desktop/cmp/dash/container/DashContainerViewSpec.ts +1 -1
  328. package/desktop/cmp/dash/container/impl/DashContainerContextMenu.ts +1 -1
  329. package/desktop/cmp/dash/container/impl/DashContainerMenuButton.ts +1 -1
  330. package/desktop/cmp/dash/container/impl/DashContainerUtils.ts +1 -1
  331. package/desktop/cmp/dash/container/impl/DashContainerView.ts +1 -1
  332. package/desktop/cmp/dock/DockContainer.ts +1 -1
  333. package/desktop/cmp/dock/DockContainerModel.ts +1 -1
  334. package/desktop/cmp/dock/DockViewModel.ts +1 -1
  335. package/desktop/cmp/dock/impl/Dock.scss +1 -1
  336. package/desktop/cmp/dock/impl/DockContainer.ts +1 -1
  337. package/desktop/cmp/dock/impl/DockView.ts +1 -1
  338. package/desktop/cmp/error/ErrorMessage.ts +1 -1
  339. package/desktop/cmp/filechooser/FileChooser.scss +1 -1
  340. package/desktop/cmp/filechooser/FileChooser.ts +1 -1
  341. package/desktop/cmp/filechooser/FileChooserModel.ts +1 -1
  342. package/desktop/cmp/filter/FilterChooser.scss +1 -1
  343. package/desktop/cmp/filter/FilterChooser.ts +1 -1
  344. package/desktop/cmp/form/FormField.scss +1 -1
  345. package/desktop/cmp/form/FormField.ts +1 -1
  346. package/desktop/cmp/grid/columns/Actions.scss +1 -1
  347. package/desktop/cmp/grid/columns/Actions.ts +1 -1
  348. package/desktop/cmp/grid/editors/BooleanEditor.ts +1 -1
  349. package/desktop/cmp/grid/editors/DateEditor.ts +1 -1
  350. package/desktop/cmp/grid/editors/EditorProps.ts +1 -1
  351. package/desktop/cmp/grid/editors/NumberEditor.ts +1 -1
  352. package/desktop/cmp/grid/editors/SelectEditor.ts +1 -1
  353. package/desktop/cmp/grid/editors/TextAreaEditor.ts +1 -1
  354. package/desktop/cmp/grid/editors/TextEditor.ts +1 -1
  355. package/desktop/cmp/grid/editors/impl/InlineEditorModel.ts +1 -1
  356. package/desktop/cmp/grid/editors/index.ts +1 -1
  357. package/desktop/cmp/grid/find/GridFindField.ts +1 -1
  358. package/desktop/cmp/grid/find/impl/GridFindFieldImplModel.ts +1 -1
  359. package/desktop/cmp/grid/impl/colchooser/ColChooser.ts +1 -1
  360. package/desktop/cmp/grid/impl/colchooser/ColChooserDialog.ts +1 -1
  361. package/desktop/cmp/grid/impl/colchooser/ColChooserModel.ts +1 -1
  362. package/desktop/cmp/grid/impl/filter/ColumnHeaderFilter.scss +1 -1
  363. package/desktop/cmp/grid/impl/filter/ColumnHeaderFilter.ts +1 -1
  364. package/desktop/cmp/grid/impl/filter/ColumnHeaderFilterModel.ts +1 -1
  365. package/desktop/cmp/grid/impl/filter/GridFilterDialog.ts +1 -1
  366. package/desktop/cmp/grid/impl/filter/custom/CustomRow.ts +1 -1
  367. package/desktop/cmp/grid/impl/filter/custom/CustomRowModel.ts +1 -1
  368. package/desktop/cmp/grid/impl/filter/custom/CustomTab.ts +1 -1
  369. package/desktop/cmp/grid/impl/filter/custom/CustomTabModel.ts +1 -1
  370. package/desktop/cmp/grid/impl/filter/values/ValuesTab.ts +1 -1
  371. package/desktop/cmp/grid/impl/filter/values/ValuesTabModel.ts +2 -2
  372. package/desktop/cmp/grouping/GroupingChooser.scss +1 -1
  373. package/desktop/cmp/grouping/GroupingChooser.ts +39 -23
  374. package/desktop/cmp/input/ButtonGroupInput.ts +1 -1
  375. package/desktop/cmp/input/Checkbox.ts +1 -1
  376. package/desktop/cmp/input/CodeInput.scss +1 -1
  377. package/desktop/cmp/input/CodeInput.ts +5 -5
  378. package/desktop/cmp/input/DateInput.scss +1 -1
  379. package/desktop/cmp/input/DateInput.ts +1 -1
  380. package/desktop/cmp/input/JsonInput.ts +1 -1
  381. package/desktop/cmp/input/NumberInput.ts +1 -1
  382. package/desktop/cmp/input/RadioInput.scss +1 -1
  383. package/desktop/cmp/input/RadioInput.ts +1 -1
  384. package/desktop/cmp/input/Select.scss +9 -1
  385. package/desktop/cmp/input/Select.ts +47 -9
  386. package/desktop/cmp/input/Slider.scss +1 -1
  387. package/desktop/cmp/input/Slider.ts +1 -1
  388. package/desktop/cmp/input/SwitchInput.scss +1 -1
  389. package/desktop/cmp/input/SwitchInput.ts +1 -1
  390. package/desktop/cmp/input/TextArea.scss +1 -1
  391. package/desktop/cmp/input/TextArea.ts +1 -1
  392. package/desktop/cmp/input/TextInput.ts +1 -1
  393. package/desktop/cmp/leftrightchooser/LeftRightChooser.scss +1 -1
  394. package/desktop/cmp/leftrightchooser/LeftRightChooser.ts +1 -1
  395. package/desktop/cmp/leftrightchooser/LeftRightChooserFilter.ts +1 -1
  396. package/desktop/cmp/leftrightchooser/LeftRightChooserModel.ts +1 -1
  397. package/desktop/cmp/leftrightchooser/impl/ChooserToolbar.ts +1 -1
  398. package/desktop/cmp/leftrightchooser/impl/Description.ts +1 -1
  399. package/desktop/cmp/loadingindicator/LoadingIndicator.ts +1 -1
  400. package/desktop/cmp/loadingindicator/index.ts +1 -1
  401. package/desktop/cmp/mask/Mask.ts +1 -1
  402. package/desktop/cmp/mask/index.ts +1 -1
  403. package/desktop/cmp/modalsupport/ModalSupport.ts +5 -5
  404. package/desktop/cmp/modalsupport/ModalSupportModel.ts +1 -1
  405. package/desktop/cmp/modalsupport/index.ts +1 -1
  406. package/desktop/cmp/panel/Panel.ts +1 -1
  407. package/desktop/cmp/panel/PanelModel.ts +1 -1
  408. package/desktop/cmp/panel/impl/PanelHeader.ts +1 -1
  409. package/desktop/cmp/panel/impl/ResizeContainer.ts +1 -1
  410. package/desktop/cmp/panel/impl/Splitter.ts +1 -1
  411. package/desktop/cmp/panel/impl/dragger/Dragger.ts +1 -1
  412. package/desktop/cmp/panel/impl/dragger/DraggerModel.ts +1 -1
  413. package/desktop/cmp/panel/index.ts +1 -1
  414. package/desktop/cmp/pinpad/impl/PinPad.ts +1 -1
  415. package/desktop/cmp/record/RecordActionBar.ts +1 -1
  416. package/desktop/cmp/record/impl/RecordActionButton.ts +1 -1
  417. package/desktop/cmp/record/index.ts +1 -1
  418. package/desktop/cmp/rest/Actions.ts +1 -1
  419. package/desktop/cmp/rest/RestGrid.ts +1 -1
  420. package/desktop/cmp/rest/RestGridModel.ts +1 -1
  421. package/desktop/cmp/rest/data/RestField.ts +1 -1
  422. package/desktop/cmp/rest/data/RestStore.ts +1 -1
  423. package/desktop/cmp/rest/impl/RestForm.ts +1 -1
  424. package/desktop/cmp/rest/impl/RestFormField.ts +1 -1
  425. package/desktop/cmp/rest/impl/RestFormModel.ts +1 -1
  426. package/desktop/cmp/rest/impl/RestGridToolbar.ts +1 -1
  427. package/desktop/cmp/rest/index.ts +1 -1
  428. package/desktop/cmp/store/impl/StoreFilterField.ts +1 -1
  429. package/desktop/cmp/tab/TabSwitcher.ts +1 -1
  430. package/desktop/cmp/tab/Tabs.scss +1 -1
  431. package/desktop/cmp/tab/impl/Tab.ts +1 -1
  432. package/desktop/cmp/tab/impl/TabContainer.ts +1 -1
  433. package/desktop/cmp/tab/index.ts +1 -1
  434. package/desktop/cmp/toolbar/Toolbar.ts +1 -1
  435. package/desktop/cmp/toolbar/ToolbarSep.ts +1 -1
  436. package/desktop/cmp/toolbar/index.ts +1 -1
  437. package/desktop/cmp/treemap/SplitTreeMap.ts +1 -1
  438. package/desktop/cmp/treemap/SplitTreeMapModel.ts +1 -1
  439. package/desktop/cmp/treemap/TreeMap.ts +1 -1
  440. package/desktop/cmp/treemap/TreeMapModel.ts +1 -1
  441. package/desktop/cmp/treemap/impl/Splitter.ts +1 -1
  442. package/desktop/cmp/treemap/index.ts +1 -1
  443. package/desktop/hooks/UseContextMenu.ts +1 -1
  444. package/desktop/hooks/UseHotkeys.ts +1 -1
  445. package/desktop/hooks/index.ts +1 -1
  446. package/docs/build-and-deploy.md +1 -1
  447. package/docs/development-environment.md +1 -1
  448. package/dynamics/desktop.ts +1 -1
  449. package/dynamics/mobile.ts +1 -1
  450. package/format/FormatDate.ts +1 -1
  451. package/format/FormatMisc.ts +1 -1
  452. package/format/FormatNumber.ts +1 -1
  453. package/format/FormatUtils.ts +1 -1
  454. package/format/impl/Utils.ts +1 -1
  455. package/format/index.ts +1 -1
  456. package/icon/Icon.ts +1 -1
  457. package/icon/XHLogo.tsx +1 -2
  458. package/icon/impl/IconCmp.ts +1 -1
  459. package/icon/impl/IconHtml.ts +1 -1
  460. package/icon/index.ts +1 -1
  461. package/inspector/InspectorPanel.ts +6 -0
  462. package/inspector/instances/InstancesModel.ts +6 -0
  463. package/inspector/instances/InstancesPanel.ts +6 -0
  464. package/inspector/stats/StatsModel.ts +6 -0
  465. package/inspector/stats/StatsPanel.ts +6 -0
  466. package/kit/ag-grid/index.ts +1 -1
  467. package/kit/blueprint/Dialog.ts +1 -1
  468. package/kit/blueprint/Wrappers.ts +1 -1
  469. package/kit/blueprint/index.ts +1 -1
  470. package/kit/golden-layout/index.js +1 -1
  471. package/kit/golden-layout/styles.scss +1 -1
  472. package/kit/highcharts/index.ts +1 -1
  473. package/kit/onsen/index.ts +1 -1
  474. package/kit/react-beautiful-dnd/index.ts +1 -1
  475. package/kit/react-dates/index.ts +1 -1
  476. package/kit/react-dropzone/index.ts +1 -1
  477. package/kit/react-select/index.ts +1 -1
  478. package/mobile/appcontainer/AboutDialog.ts +1 -1
  479. package/mobile/appcontainer/AppContainer.ts +1 -1
  480. package/mobile/appcontainer/Banner.scss +1 -1
  481. package/mobile/appcontainer/Banner.ts +1 -1
  482. package/mobile/appcontainer/ExceptionDialog.ts +1 -1
  483. package/mobile/appcontainer/ExceptionDialogDetails.ts +1 -1
  484. package/mobile/appcontainer/FeedbackDialog.ts +1 -1
  485. package/mobile/appcontainer/IdlePanel.scss +1 -1
  486. package/mobile/appcontainer/IdlePanel.ts +1 -1
  487. package/mobile/appcontainer/ImpersonationBar.ts +1 -1
  488. package/mobile/appcontainer/LockoutPanel.ts +1 -1
  489. package/mobile/appcontainer/LoginPanel.ts +1 -1
  490. package/mobile/appcontainer/Message.ts +1 -1
  491. package/mobile/appcontainer/MessageSource.ts +1 -1
  492. package/mobile/appcontainer/OptionsDialog.ts +1 -1
  493. package/mobile/appcontainer/SuspendPanel.scss +1 -1
  494. package/mobile/appcontainer/SuspendPanel.ts +1 -1
  495. package/mobile/appcontainer/Toast.ts +1 -1
  496. package/mobile/appcontainer/ToastSource.ts +1 -1
  497. package/mobile/appcontainer/VersionBar.ts +1 -1
  498. package/mobile/appcontainer/index.ts +1 -1
  499. package/mobile/cmp/appOption/AutoRefreshAppOption.ts +1 -1
  500. package/mobile/cmp/appOption/SizingModeAppOption.ts +1 -1
  501. package/mobile/cmp/appOption/ThemeAppOption.ts +1 -1
  502. package/mobile/cmp/appOption/index.ts +1 -1
  503. package/mobile/cmp/button/Button.scss +1 -1
  504. package/mobile/cmp/button/Button.ts +1 -1
  505. package/mobile/cmp/button/ButtonGroup.ts +1 -1
  506. package/mobile/cmp/button/ColAutosizeButton.ts +1 -1
  507. package/mobile/cmp/button/ColChooserButton.ts +1 -1
  508. package/mobile/cmp/button/ExpandCollapseButton.ts +1 -1
  509. package/mobile/cmp/button/FeedbackButton.ts +1 -1
  510. package/mobile/cmp/button/LogoutButton.ts +1 -1
  511. package/mobile/cmp/button/NavigatorBackButton.ts +1 -1
  512. package/mobile/cmp/button/OptionsButton.ts +1 -1
  513. package/mobile/cmp/button/RefreshButton.ts +1 -1
  514. package/mobile/cmp/button/RestoreDefaultsButton.ts +1 -1
  515. package/mobile/cmp/button/ThemeToggleButton.ts +1 -1
  516. package/mobile/cmp/button/index.ts +1 -1
  517. package/mobile/cmp/dialog/Dialog.ts +1 -1
  518. package/mobile/cmp/dialog/index.ts +1 -1
  519. package/mobile/cmp/error/ErrorMessage.ts +1 -1
  520. package/mobile/cmp/error/index.ts +1 -1
  521. package/mobile/cmp/form/FormField.ts +1 -1
  522. package/mobile/cmp/form/index.ts +1 -1
  523. package/mobile/cmp/grid/impl/ColChooser.ts +1 -1
  524. package/mobile/cmp/grid/impl/ColChooserModel.ts +1 -1
  525. package/mobile/cmp/grouping/GroupingChooser.scss +1 -1
  526. package/mobile/cmp/grouping/GroupingChooser.ts +3 -3
  527. package/mobile/cmp/header/AppBar.ts +1 -1
  528. package/mobile/cmp/header/AppMenuButton.ts +1 -1
  529. package/mobile/cmp/header/index.ts +1 -1
  530. package/mobile/cmp/input/ButtonGroupInput.ts +1 -1
  531. package/mobile/cmp/input/Checkbox.ts +1 -1
  532. package/mobile/cmp/input/DateInput.ts +1 -1
  533. package/mobile/cmp/input/Label.ts +1 -1
  534. package/mobile/cmp/input/NumberInput.ts +1 -1
  535. package/mobile/cmp/input/SearchInput.ts +1 -1
  536. package/mobile/cmp/input/Select.scss +1 -1
  537. package/mobile/cmp/input/Select.ts +1 -1
  538. package/mobile/cmp/input/SwitchInput.ts +1 -1
  539. package/mobile/cmp/input/TextArea.ts +1 -1
  540. package/mobile/cmp/input/TextInput.ts +1 -1
  541. package/mobile/cmp/input/index.ts +1 -1
  542. package/mobile/cmp/loadingindicator/LoadingIndicator.ts +1 -1
  543. package/mobile/cmp/loadingindicator/index.ts +1 -1
  544. package/mobile/cmp/mask/Mask.ts +1 -1
  545. package/mobile/cmp/mask/index.ts +1 -1
  546. package/mobile/cmp/menu/MenuButton.ts +1 -1
  547. package/mobile/cmp/menu/impl/Menu.ts +1 -1
  548. package/mobile/cmp/menu/index.ts +1 -1
  549. package/mobile/cmp/navigator/Navigator.ts +1 -1
  550. package/mobile/cmp/navigator/NavigatorModel.ts +1 -1
  551. package/mobile/cmp/navigator/PageModel.ts +1 -1
  552. package/mobile/cmp/navigator/impl/Page.ts +1 -1
  553. package/mobile/cmp/navigator/impl/swipe/BackIndicator.ts +6 -0
  554. package/mobile/cmp/navigator/impl/swipe/RefreshIndicator.ts +6 -0
  555. package/mobile/cmp/navigator/impl/swipe/Swiper.scss +1 -1
  556. package/mobile/cmp/navigator/impl/swipe/Swiper.ts +6 -1
  557. package/mobile/cmp/navigator/impl/swipe/SwiperModel.ts +6 -0
  558. package/mobile/cmp/navigator/index.ts +1 -1
  559. package/mobile/cmp/panel/DialogPanel.ts +1 -1
  560. package/mobile/cmp/panel/Panel.ts +1 -1
  561. package/mobile/cmp/panel/impl/PanelHeader.ts +1 -1
  562. package/mobile/cmp/panel/index.ts +1 -1
  563. package/mobile/cmp/pinpad/impl/PinPad.ts +1 -1
  564. package/mobile/cmp/popover/Popover.ts +1 -1
  565. package/mobile/cmp/popover/index.ts +1 -1
  566. package/mobile/cmp/store/impl/StoreFilterField.ts +1 -1
  567. package/mobile/cmp/tab/impl/Tab.ts +1 -1
  568. package/mobile/cmp/tab/impl/TabContainer.ts +1 -1
  569. package/mobile/cmp/tab/impl/Tabs.scss +1 -1
  570. package/mobile/cmp/toolbar/Toolbar.scss +1 -1
  571. package/mobile/cmp/toolbar/Toolbar.ts +1 -1
  572. package/mobile/cmp/toolbar/ToolbarSeparator.ts +1 -1
  573. package/mobile/cmp/toolbar/index.ts +1 -1
  574. package/mobx/decorators.ts +1 -1
  575. package/mobx/index.ts +1 -1
  576. package/mobx/overrides.ts +1 -1
  577. package/package.json +1 -1
  578. package/promise/Promise.ts +1 -1
  579. package/promise/index.ts +1 -1
  580. package/styles/XH.scss +1 -1
  581. package/styles/vars.scss +1 -1
  582. package/svc/AlertBannerService.ts +1 -1
  583. package/svc/AutoRefreshService.ts +1 -1
  584. package/svc/ChangelogService.ts +1 -1
  585. package/svc/ConfigService.ts +1 -1
  586. package/svc/EnvironmentService.ts +1 -1
  587. package/svc/FetchService.ts +16 -12
  588. package/svc/GridAutosizeService.ts +1 -1
  589. package/svc/GridExportService.ts +1 -1
  590. package/svc/IdentityService.ts +1 -1
  591. package/svc/IdleService.ts +1 -1
  592. package/svc/InspectorService.ts +6 -0
  593. package/svc/JsonBlobService.ts +1 -1
  594. package/svc/LocalStorageService.ts +1 -1
  595. package/svc/PrefService.ts +1 -1
  596. package/svc/TrackService.ts +1 -1
  597. package/svc/WebSocketService.ts +1 -1
  598. package/svc/index.ts +1 -1
  599. package/utils/async/AsyncUtils.ts +1 -1
  600. package/utils/async/Timer.ts +1 -1
  601. package/utils/async/index.ts +1 -1
  602. package/utils/datetime/DateTimeUtils.ts +1 -1
  603. package/utils/datetime/LocalDate.ts +1 -1
  604. package/utils/datetime/index.ts +1 -1
  605. package/utils/impl/Equals.ts +1 -1
  606. package/utils/impl/IsOmitted.ts +1 -1
  607. package/utils/impl/Separators.ts +1 -1
  608. package/utils/impl/TimeZone.ts +4 -4
  609. package/utils/impl/index.ts +1 -1
  610. package/utils/js/BrowserUtils.ts +1 -1
  611. package/utils/js/Decorators.ts +1 -1
  612. package/utils/js/DomUtils.ts +1 -1
  613. package/utils/js/HtmlUtils.ts +1 -1
  614. package/utils/js/LangUtils.ts +1 -1
  615. package/utils/js/LogUtils.ts +1 -1
  616. package/utils/js/VersionUtils.ts +1 -1
  617. package/utils/js/index.ts +1 -1
  618. package/utils/react/ClassName.ts +1 -1
  619. package/utils/react/Hooks.ts +1 -1
  620. package/utils/react/LayoutPropUtils.ts +1 -1
  621. package/utils/react/ObservableRef.ts +1 -1
  622. package/utils/react/ReactUtils.ts +1 -1
  623. package/utils/react/index.ts +1 -1
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {GroupingChooserModel} from '@xh/hoist/cmp/grouping';
8
8
  import {box, div, filler, fragment, hbox, vbox} from '@xh/hoist/cmp/layout';
@@ -12,7 +12,7 @@ import {select, MENU_PORTAL_ID} from '@xh/hoist/desktop/cmp/input';
12
12
  import {panel} from '@xh/hoist/desktop/cmp/panel';
13
13
  import '@xh/hoist/desktop/register';
14
14
  import {Icon} from '@xh/hoist/icon';
15
- import {menu, menuDivider, menuItem, popover, Position} from '@xh/hoist/kit/blueprint';
15
+ import {menu, menuDivider, menuItem, popover} from '@xh/hoist/kit/blueprint';
16
16
  import {dragDropContext, draggable, droppable} from '@xh/hoist/kit/react-beautiful-dnd';
17
17
  import {splitLayoutProps} from '@xh/hoist/utils/react';
18
18
  import classNames from 'classnames';
@@ -26,8 +26,8 @@ export interface GroupingChooserProps extends ButtonProps<GroupingChooserModel>
26
26
  /** Min height in pixels of the popover menu itself. */
27
27
  popoverMinHeight?: number;
28
28
 
29
- /** Position for chooser popover, as per Blueprint docs. */
30
- popoverPosition?: Position;
29
+ /** Position of popover relative to target button. */
30
+ popoverPosition?: 'bottom' | 'top';
31
31
 
32
32
  /** Title for popover (default "GROUP BY") or null to suppress. */
33
33
  popoverTitle?: string;
@@ -74,12 +74,11 @@ export const [GroupingChooser, groupingChooser] = hoistCmp.withFactory<GroupingC
74
74
  item: popover({
75
75
  isOpen,
76
76
  popoverRef: model.popoverRef,
77
- popoverClassName: classNames(
78
- 'xh-grouping-chooser-popover',
79
- editorIsOpen ? 'xh-popup--framed' : null
80
- ),
81
- position: favoritesIsOpen ? 'bottom-right' : popoverPosition,
82
- minimal: favoritesIsOpen,
77
+ popoverClassName: 'xh-grouping-chooser-popover xh-popup--framed',
78
+ // right align favorites popover to match star icon
79
+ // left align editor to keep in place when button changing size when commitOnChange: true
80
+ position: favoritesIsOpen ? `${popoverPosition}-right` : `${popoverPosition}-left`,
81
+ minimal: styleButtonAsInput,
83
82
  target: fragment(
84
83
  button({
85
84
  text: label,
@@ -92,23 +91,23 @@ export const [GroupingChooser, groupingChooser] = hoistCmp.withFactory<GroupingC
92
91
  ),
93
92
  minimal: styleButtonAsInput,
94
93
  ...buttonProps,
95
- onClick: () => model.showEditor()
94
+ onClick: () => model.toggleEditor()
96
95
  }),
97
96
  favoritesIcon()
98
97
  ),
99
98
  content: favoritesIsOpen
100
99
  ? favoritesMenu()
101
- : editor({popoverWidth, popoverMinHeight, popoverTitle, emptyText}),
100
+ : editorIsOpen
101
+ ? editor({popoverWidth, popoverMinHeight, popoverTitle, emptyText})
102
+ : null,
102
103
  onInteraction: (nextOpenState, e) => {
103
- if (isOpen && nextOpenState === false) {
104
- // Prevent clicks with Select controls from closing popover
105
- const id = MENU_PORTAL_ID,
106
- selectPortal = document.getElementById(id)?.contains(e?.target),
107
- selectClick = e?.target?.classList.contains('xh-select__single-value');
108
-
109
- if (!selectPortal && !selectClick) {
110
- model.commitPendingValueAndClose();
111
- }
104
+ if (
105
+ isOpen &&
106
+ nextOpenState === false &&
107
+ e?.target &&
108
+ !targetIsControlButtonOrPortal(e.target)
109
+ ) {
110
+ model.commitPendingValueAndClose();
112
111
  }
113
112
  }
114
113
  })
@@ -125,7 +124,7 @@ const editor = hoistCmp.factory<GroupingChooserModel>({
125
124
  width: popoverWidth,
126
125
  minHeight: popoverMinHeight,
127
126
  items: [
128
- div({className: 'xh-popup__title', item: popoverTitle}),
127
+ div({className: 'xh-popup__title', item: popoverTitle, omit: !popoverTitle}),
129
128
  dimensionList({emptyText}),
130
129
  addDimensionControl(),
131
130
  filler()
@@ -293,6 +292,23 @@ function getDimOptions(dims, model) {
293
292
  return sortBy(ret, 'label');
294
293
  }
295
294
 
295
+ function targetIsControlButtonOrPortal(target) {
296
+ const selectPortal = document.getElementById(MENU_PORTAL_ID)?.contains(target),
297
+ selectClick = targetWithin(target, 'xh-select__single-value'),
298
+ editorClick = targetWithin(target, 'xh-grouping-chooser-button--with-favorites');
299
+ return selectPortal || selectClick || editorClick;
300
+ }
301
+
302
+ /**
303
+ * Determines whether any of the target's parents have a specific class name
304
+ */
305
+ function targetWithin(target, className): boolean {
306
+ for (let elem = target; elem; elem = elem.parentElement) {
307
+ if (elem.classList.contains(className)) return true;
308
+ }
309
+ return false;
310
+ }
311
+
296
312
  //------------------
297
313
  // Favorites
298
314
  //------------------
@@ -303,7 +319,7 @@ const favoritesIcon = hoistCmp.factory<GroupingChooserModel>({
303
319
  item: Icon.favorite(),
304
320
  className: 'xh-grouping-chooser__favorite-icon',
305
321
  onClick: e => {
306
- model.openFavoritesMenu();
322
+ model.toggleFavoritesMenu();
307
323
  e.stopPropagation();
308
324
  }
309
325
  });
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {hoistCmp, HoistModel, Intent, XH} from '@xh/hoist/core';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {hoistCmp, StyleProps, HoistProps, HSide} from '@xh/hoist/core';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  .xh-app .xh-input {
8
8
  .CodeMirror {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {box, div, filler, fragment, frame, hbox, label, span, vbox} from '@xh/hoist/cmp/layout';
@@ -83,7 +83,7 @@ export interface CodeInputProps extends HoistProps, HoistInputProps, LayoutProps
83
83
  */
84
84
  readonly?: boolean;
85
85
 
86
- /** True to display a copy button at bottom-right of input. */
86
+ /** True (default) to display a copy button at bottom-right of input. */
87
87
  showCopyButton?: boolean;
88
88
 
89
89
  /**
@@ -148,7 +148,7 @@ class CodeInputModel extends HoistInputModel {
148
148
  }
149
149
 
150
150
  get showCopyButton(): boolean {
151
- return withDefault(this.componentProps.showCopyButton, false);
151
+ return withDefault(this.componentProps.showCopyButton, true);
152
152
  }
153
153
 
154
154
  get showFullscreenButton(): boolean {
@@ -182,14 +182,14 @@ class CodeInputModel extends HoistInputModel {
182
182
  }
183
183
 
184
184
  get actionButtons(): ReactElement[] {
185
- const {showCopyButton, showFormatButton, showFullscreenButton, editor} = this;
185
+ const {showCopyButton, showFormatButton, showFullscreenButton} = this;
186
186
  return compact([
187
187
  showCopyButton
188
188
  ? clipboardButton({
189
189
  text: null,
190
190
  title: 'Copy to clipboard',
191
191
  successMessage: 'Contents copied to clipboard',
192
- getCopyText: () => editor.getValue()
192
+ getCopyText: () => this.internalValue
193
193
  })
194
194
  : null,
195
195
  showFormatButton
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  .xh-date-input {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {div} from '@xh/hoist/cmp/layout';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {hoistCmp} from '@xh/hoist/core';
8
8
  import '@xh/hoist/desktop/register';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import composeRefs from '@seznam/compose-react-refs';
8
8
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  .xh-radio-input {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {hoistCmp, HoistProps, HSide} from '@xh/hoist/core';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  // Host div for Select option menu portal.
@@ -105,6 +105,14 @@
105
105
  }
106
106
  }
107
107
  }
108
+
109
+ &__tooltip {
110
+ &__target {
111
+ // Required to override tooltip styling applied by Blueprint, which was breaking the
112
+ // react-select styles that elide overly-long values.
113
+ display: inherit;
114
+ }
115
+ }
108
116
  }
109
117
  }
110
118
 
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {box, div, fragment, hbox, span} from '@xh/hoist/cmp/layout';
@@ -18,6 +18,7 @@ import {
18
18
  } from '@xh/hoist/core';
19
19
  import '@xh/hoist/desktop/register';
20
20
  import {Icon} from '@xh/hoist/icon';
21
+ import {tooltip} from '@xh/hoist/kit/blueprint';
21
22
  import {
22
23
  reactAsyncCreatableSelect,
23
24
  reactAsyncSelect,
@@ -75,6 +76,12 @@ export interface SelectProps extends HoistProps, HoistInputProps, LayoutProps {
75
76
  /** True to allow entry/selection of multiple values - "tag picker" style. */
76
77
  enableMulti?: boolean;
77
78
 
79
+ /**
80
+ * True to enable tooltips on selected values. Enable when the space
81
+ * available to the select component might not support showing the value's full text.
82
+ */
83
+ enableTooltips?: boolean;
84
+
78
85
  /**
79
86
  * True to use react-windowed-select for improved performance on large option lists.
80
87
  * See https://github.com/jacobworrel/react-windowed-select/.
@@ -362,7 +369,7 @@ class SelectInputModel extends HoistInputModel {
362
369
  super.noteFocused();
363
370
  }
364
371
 
365
- selectText() {
372
+ private selectText() {
366
373
  const {reactSelect} = this;
367
374
  if (!reactSelect) return;
368
375
 
@@ -430,7 +437,7 @@ class SelectInputModel extends HoistInputModel {
430
437
  return this.findOption(external, !isNil(external));
431
438
  }
432
439
 
433
- findOption(value, createIfNotFound, options = this.internalOptions) {
440
+ private findOption(value, createIfNotFound, options = this.internalOptions) {
434
441
  // Do a depth-first search of options
435
442
  for (const option of options) {
436
443
  if (option.options) {
@@ -455,7 +462,7 @@ class SelectInputModel extends HoistInputModel {
455
462
  return internal.value;
456
463
  }
457
464
 
458
- normalizeOptions(options, depth = 0) {
465
+ private normalizeOptions(options, depth = 0) {
459
466
  throwIf(depth > 1, 'Grouped select options support only one-deep nesting.');
460
467
 
461
468
  options = options || [];
@@ -465,11 +472,11 @@ class SelectInputModel extends HoistInputModel {
465
472
  // Normalize / clone a single source value into a normalized option object. Supports Strings
466
473
  // and Objects. Objects are validated/defaulted to ensure a label+value or label+options sublist,
467
474
  // with other fields brought along to support Selects emitting value objects with ad hoc properties.
468
- toOption(src, depth) {
475
+ private toOption(src, depth) {
469
476
  return isPlainObject(src) ? this.objectToOption(src, depth) : this.valueToOption(src);
470
477
  }
471
478
 
472
- objectToOption(src, depth) {
479
+ private objectToOption(src, depth) {
473
480
  const {componentProps} = this,
474
481
  labelField = withDefault(componentProps.labelField, 'label'),
475
482
  valueField = withDefault(componentProps.valueField, 'value');
@@ -492,7 +499,7 @@ class SelectInputModel extends HoistInputModel {
492
499
  };
493
500
  }
494
501
 
495
- valueToOption(src) {
502
+ private valueToOption(src) {
496
503
  return {label: src != null ? src.toString() : '-null-', value: src};
497
504
  }
498
505
 
@@ -542,7 +549,7 @@ class SelectInputModel extends HoistInputModel {
542
549
  return optionRenderer(opt);
543
550
  };
544
551
 
545
- optionRenderer = opt => {
552
+ private optionRenderer = opt => {
546
553
  if (this.hideSelectedOptionCheck) {
547
554
  return div(opt.label);
548
555
  }
@@ -609,6 +616,24 @@ class SelectInputModel extends HoistInputModel {
609
616
  };
610
617
  }
611
618
 
619
+ getMultiValueLabelCmp() {
620
+ return this.componentProps.enableTooltips
621
+ ? props => {
622
+ props = this.withTooltip(props, 'xh-select__tooltip__target');
623
+ return createElement(components.MultiValueLabel, props);
624
+ }
625
+ : components.MultiValueLabel;
626
+ }
627
+
628
+ getSingleValueCmp() {
629
+ return this.componentProps.enableTooltips
630
+ ? props => {
631
+ props = this.withTooltip(props, 'xh-select__tooltip__target');
632
+ return createElement(components.SingleValue, props);
633
+ }
634
+ : components.SingleValue;
635
+ }
636
+
612
637
  noOptionsMessageFn = params => {
613
638
  // account for bug in react-windowed-select https://github.com/jacobworrel/react-windowed-select/issues/19
614
639
  if (!params) return '';
@@ -635,6 +660,17 @@ class SelectInputModel extends HoistInputModel {
635
660
  }
636
661
  return portal;
637
662
  }
663
+
664
+ private withTooltip(props: PlainObject, targetClassName: string): PlainObject {
665
+ return {
666
+ ...props,
667
+ children: tooltip({
668
+ targetClassName,
669
+ content: props.children,
670
+ target: props.children
671
+ })
672
+ };
673
+ }
638
674
  }
639
675
 
640
676
  const cmp = hoistCmp.factory<SelectInputModel>(({model, className, ...props}, ref) => {
@@ -663,7 +699,9 @@ const cmp = hoistCmp.factory<SelectInputModel>(({model, className, ...props}, re
663
699
  DropdownIndicator: model.getDropdownIndicatorCmp(),
664
700
  ClearIndicator: model.getClearIndicatorCmp(),
665
701
  IndicatorSeparator: () => null,
666
- ValueContainer: model.getValueContainerCmp()
702
+ ValueContainer: model.getValueContainerCmp(),
703
+ MultiValueLabel: model.getMultiValueLabelCmp(),
704
+ SingleValue: model.getSingleValueCmp()
667
705
  },
668
706
 
669
707
  // A shared div is created lazily here as needed, appended to the body, and assigned
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  .xh-slider {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {box} from '@xh/hoist/cmp/layout';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  .xh-switch-input.xh-input-invalid {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
8
8
  import {hoistCmp, HoistProps, HSide, StyleProps} from '@xh/hoist/core';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  .xh-text-area {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import composeRefs from '@seznam/compose-react-refs';
8
8
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import composeRefs from '@seznam/compose-react-refs';
8
8
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  .xh-lr-chooser {
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {grid, GridProps} from '@xh/hoist/cmp/grid';
8
8
  import {hframe, vbox} from '@xh/hoist/cmp/layout';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {hoistCmp, HoistModel, HoistProps, lookup, useLocalModel, uses} from '@xh/hoist/core';
8
8
  import {textInput} from '@xh/hoist/desktop/cmp/input';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {GridModel} from '@xh/hoist/cmp/grid';
8
8
  import {div} from '@xh/hoist/cmp/layout';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {vspacer} from '@xh/hoist/cmp/layout';
8
8
  import {hoistCmp} from '@xh/hoist/core';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {hoistCmp} from '@xh/hoist/core';
8
8
  import {callout} from '@xh/hoist/kit/blueprint';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {hbox} from '@xh/hoist/cmp/layout';
8
8
  import {div} from '@xh/hoist/cmp/layout/Tags';
@@ -2,6 +2,6 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  export * from './LoadingIndicator';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {box, vbox, vspacer} from '@xh/hoist/cmp/layout';
8
8
  import {spinner as spinnerCmp} from '@xh/hoist/cmp/spinner';
@@ -2,6 +2,6 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  export * from './Mask';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  import {box, fragment} from '@xh/hoist/cmp/layout';
@@ -67,15 +67,15 @@ const inlineContainer = hoistCmp.factory<ModalSupportModel>({
67
67
  // Dialog cmp, inside which to place the child cmp when `model.isModal = true`
68
68
  const modalContainer = hoistCmp.factory<ModalSupportModel>({
69
69
  render({model}) {
70
- if (!model.isModal) return null;
71
-
72
- const {width, height, canOutsideClickClose} = model;
70
+ const {isModal, width, height, canOutsideClickClose} = model;
73
71
  return dialog({
74
72
  className: 'xh-modal-support__modal',
75
73
  style: {width, height},
76
74
  canOutsideClickClose,
77
- isOpen: true,
75
+ isOpen: isModal,
78
76
  onClose: () => model.toggleIsModal(),
77
+ // Creates the dialog's portal immediately and keeps it around, to preserve correct ordering relative to any internal popups.
78
+ lazy: false,
79
79
  item: box({
80
80
  ref: model.modalRef,
81
81
  flexDirection: 'column',
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
8
  import {HoistModel} from '@xh/hoist/core';
@@ -2,7 +2,7 @@
2
2
  * This file belongs to Hoist, an application development toolkit
3
3
  * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
4
  *
5
- * Copyright © 2022 Extremely Heavy Industries Inc.
5
+ * Copyright © 2023 Extremely Heavy Industries Inc.
6
6
  */
7
7
  export * from './ModalSupport';
8
8
  export * from './ModalSupportModel';