@itwin/core-react 4.0.0-dev.16 → 4.0.0-dev.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/lib/cjs/core-react/UiCore.js.map +1 -1
  2. package/lib/cjs/core-react/_geometry.scss +70 -70
  3. package/lib/cjs/core-react/_helpers.scss +51 -51
  4. package/lib/cjs/core-react/_math.scss +13 -13
  5. package/lib/cjs/core-react/_scrollbar.scss +51 -51
  6. package/lib/cjs/core-react/_typography.scss +44 -44
  7. package/lib/cjs/core-react/_z-index.scss +65 -65
  8. package/lib/cjs/core-react/autosuggest/AutoSuggest.js.map +1 -1
  9. package/lib/cjs/core-react/autosuggest/AutoSuggest.scss +79 -79
  10. package/lib/cjs/core-react/badge/Badge.js.map +1 -1
  11. package/lib/cjs/core-react/badge/Badge.scss +13 -13
  12. package/lib/cjs/core-react/badge/BadgeUtilities.js.map +1 -1
  13. package/lib/cjs/core-react/badge/BetaBadge.js.map +1 -1
  14. package/lib/cjs/core-react/badge/NewBadge.js.map +1 -1
  15. package/lib/cjs/core-react/badge/NewBadge.scss +9 -9
  16. package/lib/cjs/core-react/base/Centered.js.map +1 -1
  17. package/lib/cjs/core-react/base/Div.js.map +1 -1
  18. package/lib/cjs/core-react/base/DivWithOutsideClick.js.map +1 -1
  19. package/lib/cjs/core-react/base/FillCentered.js.map +1 -1
  20. package/lib/cjs/core-react/base/FlexWrapContainer.js.map +1 -1
  21. package/lib/cjs/core-react/base/Gap.js.map +1 -1
  22. package/lib/cjs/core-react/base/PointerEvents.js.map +1 -1
  23. package/lib/cjs/core-react/base/ScrollView.js.map +1 -1
  24. package/lib/cjs/core-react/base/base.scss +42 -42
  25. package/lib/cjs/core-react/base/classes.scss +13 -13
  26. package/lib/cjs/core-react/base/index.scss +5 -5
  27. package/lib/cjs/core-react/button/UnderlinedButton.js.map +1 -1
  28. package/lib/cjs/core-react/button/UnderlinedButton.scss +32 -32
  29. package/lib/cjs/core-react/checklistbox/CheckListBox.js.map +1 -1
  30. package/lib/cjs/core-react/checklistbox/CheckListBox.scss +21 -21
  31. package/lib/cjs/core-react/classes.scss +11 -11
  32. package/lib/cjs/core-react/colorthemes.scss +61 -61
  33. package/lib/cjs/core-react/colorvariables.scss +131 -131
  34. package/lib/cjs/core-react/contextmenu/ContextMenu.js.map +1 -1
  35. package/lib/cjs/core-react/contextmenu/ContextMenu.scss +236 -236
  36. package/lib/cjs/core-react/contextmenu/ContextMenuDirection.js.map +1 -1
  37. package/lib/cjs/core-react/contextmenu/ContextMenuDivider.js.map +1 -1
  38. package/lib/cjs/core-react/contextmenu/ContextMenuItem.js.map +1 -1
  39. package/lib/cjs/core-react/contextmenu/ContextSubMenu.js.map +1 -1
  40. package/lib/cjs/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
  41. package/lib/cjs/core-react/contextmenu/PopupContextMenu.js.map +1 -1
  42. package/lib/cjs/core-react/contextmenu/TildeFinder.js.map +1 -1
  43. package/lib/cjs/core-react/dialog/Dialog.js.map +1 -1
  44. package/lib/cjs/core-react/dialog/Dialog.scss +245 -245
  45. package/lib/cjs/core-react/dialog/GlobalDialog.js.map +1 -1
  46. package/lib/cjs/core-react/elementseparator/ElementSeparator.js.map +1 -1
  47. package/lib/cjs/core-react/elementseparator/ElementSeparator.scss +85 -85
  48. package/lib/cjs/core-react/enums/Alignment.js.map +1 -1
  49. package/lib/cjs/core-react/enums/CheckBoxState.js.map +1 -1
  50. package/lib/cjs/core-react/enums/Orientation.js.map +1 -1
  51. package/lib/cjs/core-react/enums/SortDirection.js.map +1 -1
  52. package/lib/cjs/core-react/enums/TimeFormat.js.map +1 -1
  53. package/lib/cjs/core-react/expandable/ExpandableList.js.map +1 -1
  54. package/lib/cjs/core-react/expandable/ExpandableList.scss +8 -8
  55. package/lib/cjs/core-react/expandable/classes.scss +7 -7
  56. package/lib/cjs/core-react/expandable/index.scss +5 -5
  57. package/lib/cjs/core-react/expandable/list.scss +35 -35
  58. package/lib/cjs/core-react/focus/ItemKeyboardNavigator.js.map +1 -1
  59. package/lib/cjs/core-react/focustrap/FocusTrap.js.map +1 -1
  60. package/lib/cjs/core-react/hocs/withIsPressed.js.map +1 -1
  61. package/lib/cjs/core-react/hocs/withOnOutsideClick.js.map +1 -1
  62. package/lib/cjs/core-react/hocs/withTimeout.js.map +1 -1
  63. package/lib/cjs/core-react/icons/ConditionalIconItem.js.map +1 -1
  64. package/lib/cjs/core-react/icons/IconComponent.js.map +1 -1
  65. package/lib/cjs/core-react/icons/IconComponent.scss +20 -20
  66. package/lib/cjs/core-react/icons/SvgPath.js.map +1 -1
  67. package/lib/cjs/core-react/icons/SvgPath.scss +15 -15
  68. package/lib/cjs/core-react/icons/WebFontIcon.js.map +1 -1
  69. package/lib/cjs/core-react/icons/WebFontIcon.scss +17 -17
  70. package/lib/cjs/core-react/icons/classes.scss +10 -10
  71. package/lib/cjs/core-react/icons/index.scss +6 -6
  72. package/lib/cjs/core-react/icons/mixins.scss +25 -25
  73. package/lib/cjs/core-react/icons/variables.scss +12 -12
  74. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
  75. package/lib/cjs/core-react/imagecheckbox/ImageCheckBox.scss +54 -54
  76. package/lib/cjs/core-react/index.scss +21 -21
  77. package/lib/cjs/core-react/inputs/Input.js.map +1 -1
  78. package/lib/cjs/core-react/inputs/InputLabel.js.map +1 -1
  79. package/lib/cjs/core-react/inputs/InputStatus.js.map +1 -1
  80. package/lib/cjs/core-react/inputs/LabeledComponentProps.js.map +1 -1
  81. package/lib/cjs/core-react/inputs/classes.scss +8 -8
  82. package/lib/cjs/core-react/inputs/iconinput/IconInput.js.map +1 -1
  83. package/lib/cjs/core-react/inputs/iconinput/IconInput.scss +35 -35
  84. package/lib/cjs/core-react/inputs/index.scss +9 -9
  85. package/lib/cjs/core-react/inputs/input-label.scss +90 -90
  86. package/lib/cjs/core-react/inputs/input.scss +58 -58
  87. package/lib/cjs/core-react/inputs/numberinput/NumberInput.js.map +1 -1
  88. package/lib/cjs/core-react/inputs/numberinput/NumberInput.scss +88 -88
  89. package/lib/cjs/core-react/inputs/variables.scss +38 -38
  90. package/lib/cjs/core-react/layout-variables.scss +17 -17
  91. package/lib/cjs/core-react/listbox/Listbox.js.map +1 -1
  92. package/lib/cjs/core-react/listbox/Listbox.scss +54 -54
  93. package/lib/cjs/core-react/loading/LoadingBar.js.map +1 -1
  94. package/lib/cjs/core-react/loading/LoadingBar.scss +29 -29
  95. package/lib/cjs/core-react/loading/LoadingPrompt.js.map +1 -1
  96. package/lib/cjs/core-react/loading/LoadingPrompt.scss +33 -33
  97. package/lib/cjs/core-react/loading/LoadingSpinner.js.map +1 -1
  98. package/lib/cjs/core-react/loading/LoadingSpinner.scss +26 -26
  99. package/lib/cjs/core-react/loading/LoadingStatus.js.map +1 -1
  100. package/lib/cjs/core-react/loading/LoadingStatus.scss +20 -20
  101. package/lib/cjs/core-react/loading/index.scss +5 -5
  102. package/lib/cjs/core-react/loading/mixins.scss +57 -57
  103. package/lib/cjs/core-react/messagebox/MessageBox.js.map +1 -1
  104. package/lib/cjs/core-react/messagebox/MessageBox.scss +56 -56
  105. package/lib/cjs/core-react/notification/MessageRenderer.js.map +1 -1
  106. package/lib/cjs/core-react/notification/MessageType.js.map +1 -1
  107. package/lib/cjs/core-react/popup/Popup.js.map +1 -1
  108. package/lib/cjs/core-react/popup/Popup.scss +240 -240
  109. package/lib/cjs/core-react/radialmenu/Annulus.js.map +1 -1
  110. package/lib/cjs/core-react/radialmenu/RadialMenu.js.map +1 -1
  111. package/lib/cjs/core-react/radialmenu/RadialMenu.scss +55 -55
  112. package/lib/cjs/core-react/searchbox/SearchBox.js.map +1 -1
  113. package/lib/cjs/core-react/searchbox/SearchBox.scss +47 -47
  114. package/lib/cjs/core-react/settings/SettingsContainer.js.map +1 -1
  115. package/lib/cjs/core-react/settings/SettingsContainer.scss +68 -68
  116. package/lib/cjs/core-react/settings/SettingsManager.js.map +1 -1
  117. package/lib/cjs/core-react/style/baseline.scss +11 -11
  118. package/lib/cjs/core-react/style/breakpoints.scss +41 -41
  119. package/lib/cjs/core-react/style/colors.scss +77 -77
  120. package/lib/cjs/core-react/style/index.scss +10 -10
  121. package/lib/cjs/core-react/style/mixins.scss +27 -27
  122. package/lib/cjs/core-react/style/opacity.scss +16 -16
  123. package/lib/cjs/core-react/style/themecolors.scss +123 -123
  124. package/lib/cjs/core-react/tabs/Tabs.js.map +1 -1
  125. package/lib/cjs/core-react/tabs/VerticalTabs.js.map +1 -1
  126. package/lib/cjs/core-react/tabs/classes.scss +7 -7
  127. package/lib/cjs/core-react/tabs/index.scss +5 -5
  128. package/lib/cjs/core-react/tabs/tabs.scss +96 -96
  129. package/lib/cjs/core-react/tabs/vertical.scss +51 -51
  130. package/lib/cjs/core-react/text/BlockText.js.map +1 -1
  131. package/lib/cjs/core-react/text/BodyText.js.map +1 -1
  132. package/lib/cjs/core-react/text/DisabledText.js.map +1 -1
  133. package/lib/cjs/core-react/text/FilteredText.js.map +1 -1
  134. package/lib/cjs/core-react/text/FilteredText.scss +10 -10
  135. package/lib/cjs/core-react/text/MutedText.js.map +1 -1
  136. package/lib/cjs/core-react/text/StyledText.js.map +1 -1
  137. package/lib/cjs/core-react/text/TextProps.js.map +1 -1
  138. package/lib/cjs/core-react/text/block.scss +15 -15
  139. package/lib/cjs/core-react/text/body.scss +13 -13
  140. package/lib/cjs/core-react/text/classes.scss +10 -10
  141. package/lib/cjs/core-react/text/disabled.scss +10 -10
  142. package/lib/cjs/core-react/text/index.scss +10 -10
  143. package/lib/cjs/core-react/text/mixins.scss +24 -24
  144. package/lib/cjs/core-react/text/muted.scss +10 -10
  145. package/lib/cjs/core-react/tree/Branch.js.map +1 -1
  146. package/lib/cjs/core-react/tree/Branch.scss +12 -12
  147. package/lib/cjs/core-react/tree/ExpansionToggle.js.map +1 -1
  148. package/lib/cjs/core-react/tree/ExpansionToggle.scss +32 -32
  149. package/lib/cjs/core-react/tree/Node.js.map +1 -1
  150. package/lib/cjs/core-react/tree/Node.scss +68 -68
  151. package/lib/cjs/core-react/tree/Placeholder.js.map +1 -1
  152. package/lib/cjs/core-react/tree/Placeholder.scss +17 -17
  153. package/lib/cjs/core-react/tree/Tree.js.map +1 -1
  154. package/lib/cjs/core-react/tree/Tree.scss +21 -21
  155. package/lib/cjs/core-react/uistate/LocalStateStorage.js.map +1 -1
  156. package/lib/cjs/core-react/uistate/UiStateEntry.js.map +1 -1
  157. package/lib/cjs/core-react/uistate/UiStateStorage.js.map +1 -1
  158. package/lib/cjs/core-react/utils/IconHelper.js.map +1 -1
  159. package/lib/cjs/core-react/utils/IconWebComponent.js.map +1 -1
  160. package/lib/cjs/core-react/utils/Point.js.map +1 -1
  161. package/lib/cjs/core-react/utils/Props.js.map +1 -1
  162. package/lib/cjs/core-react/utils/Rectangle.js.map +1 -1
  163. package/lib/cjs/core-react/utils/ScrollPositionMaintainer.js.map +1 -1
  164. package/lib/cjs/core-react/utils/Size.js.map +1 -1
  165. package/lib/cjs/core-react/utils/Timer.js.map +1 -1
  166. package/lib/cjs/core-react/utils/UiGeometry.js.map +1 -1
  167. package/lib/cjs/core-react/utils/flattenChildren.js.map +1 -1
  168. package/lib/cjs/core-react/utils/getBestBWContrastColor.js.map +1 -1
  169. package/lib/cjs/core-react/utils/getCssVariable.js.map +1 -1
  170. package/lib/cjs/core-react/utils/getDisplayName.js.map +1 -1
  171. package/lib/cjs/core-react/utils/getUserColor.js.map +1 -1
  172. package/lib/cjs/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
  173. package/lib/cjs/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
  174. package/lib/cjs/core-react/utils/hooks/useDisposable.js.map +1 -1
  175. package/lib/cjs/core-react/utils/hooks/useEffectSkipFirst.js.map +1 -1
  176. package/lib/cjs/core-react/utils/hooks/useEventListener.js.map +1 -1
  177. package/lib/cjs/core-react/utils/hooks/useInterval.js.map +1 -1
  178. package/lib/cjs/core-react/utils/hooks/useLifecycleLogging.js.map +1 -1
  179. package/lib/cjs/core-react/utils/hooks/useOnOutsideClick.js.map +1 -1
  180. package/lib/cjs/core-react/utils/hooks/useProximityToMouse.js.map +1 -1
  181. package/lib/cjs/core-react/utils/hooks/useRefEffect.js.map +1 -1
  182. package/lib/cjs/core-react/utils/hooks/useRefState.js.map +1 -1
  183. package/lib/cjs/core-react/utils/hooks/useRefs.js.map +1 -1
  184. package/lib/cjs/core-react/utils/hooks/useResizeObserver.js.map +1 -1
  185. package/lib/cjs/core-react/utils/hooks/useTargeted.js.map +1 -1
  186. package/lib/cjs/core-react/utils/hooks/useThrottledFn.js.map +1 -1
  187. package/lib/cjs/core-react/utils/hooks/useWidgetOpacityContext.js.map +1 -1
  188. package/lib/cjs/core-react/utils/isPromiseLike.js.map +1 -1
  189. package/lib/cjs/core-react/utils/shallowDiffers.js.map +1 -1
  190. package/lib/cjs/core-react/utils/typeUtils.js.map +1 -1
  191. package/lib/cjs/core-react.js.map +1 -1
  192. package/lib/esm/core-react/UiCore.js.map +1 -1
  193. package/lib/esm/core-react/_geometry.scss +70 -70
  194. package/lib/esm/core-react/_helpers.scss +51 -51
  195. package/lib/esm/core-react/_math.scss +13 -13
  196. package/lib/esm/core-react/_scrollbar.scss +51 -51
  197. package/lib/esm/core-react/_typography.scss +44 -44
  198. package/lib/esm/core-react/_z-index.scss +65 -65
  199. package/lib/esm/core-react/autosuggest/AutoSuggest.js.map +1 -1
  200. package/lib/esm/core-react/autosuggest/AutoSuggest.scss +79 -79
  201. package/lib/esm/core-react/badge/Badge.js.map +1 -1
  202. package/lib/esm/core-react/badge/Badge.scss +13 -13
  203. package/lib/esm/core-react/badge/BadgeUtilities.js.map +1 -1
  204. package/lib/esm/core-react/badge/BetaBadge.js.map +1 -1
  205. package/lib/esm/core-react/badge/NewBadge.js.map +1 -1
  206. package/lib/esm/core-react/badge/NewBadge.scss +9 -9
  207. package/lib/esm/core-react/base/Centered.js.map +1 -1
  208. package/lib/esm/core-react/base/Div.js.map +1 -1
  209. package/lib/esm/core-react/base/DivWithOutsideClick.js.map +1 -1
  210. package/lib/esm/core-react/base/FillCentered.js.map +1 -1
  211. package/lib/esm/core-react/base/FlexWrapContainer.js.map +1 -1
  212. package/lib/esm/core-react/base/Gap.js.map +1 -1
  213. package/lib/esm/core-react/base/PointerEvents.js.map +1 -1
  214. package/lib/esm/core-react/base/ScrollView.js.map +1 -1
  215. package/lib/esm/core-react/base/base.scss +42 -42
  216. package/lib/esm/core-react/base/classes.scss +13 -13
  217. package/lib/esm/core-react/base/index.scss +5 -5
  218. package/lib/esm/core-react/button/UnderlinedButton.js.map +1 -1
  219. package/lib/esm/core-react/button/UnderlinedButton.scss +32 -32
  220. package/lib/esm/core-react/checklistbox/CheckListBox.js.map +1 -1
  221. package/lib/esm/core-react/checklistbox/CheckListBox.scss +21 -21
  222. package/lib/esm/core-react/classes.scss +11 -11
  223. package/lib/esm/core-react/colorthemes.scss +61 -61
  224. package/lib/esm/core-react/colorvariables.scss +131 -131
  225. package/lib/esm/core-react/contextmenu/ContextMenu.js.map +1 -1
  226. package/lib/esm/core-react/contextmenu/ContextMenu.scss +236 -236
  227. package/lib/esm/core-react/contextmenu/ContextMenuDirection.js.map +1 -1
  228. package/lib/esm/core-react/contextmenu/ContextMenuDivider.js.map +1 -1
  229. package/lib/esm/core-react/contextmenu/ContextMenuItem.js.map +1 -1
  230. package/lib/esm/core-react/contextmenu/ContextSubMenu.js.map +1 -1
  231. package/lib/esm/core-react/contextmenu/GlobalContextMenu.js.map +1 -1
  232. package/lib/esm/core-react/contextmenu/PopupContextMenu.js.map +1 -1
  233. package/lib/esm/core-react/contextmenu/TildeFinder.js.map +1 -1
  234. package/lib/esm/core-react/dialog/Dialog.js.map +1 -1
  235. package/lib/esm/core-react/dialog/Dialog.scss +245 -245
  236. package/lib/esm/core-react/dialog/GlobalDialog.js.map +1 -1
  237. package/lib/esm/core-react/elementseparator/ElementSeparator.js.map +1 -1
  238. package/lib/esm/core-react/elementseparator/ElementSeparator.scss +85 -85
  239. package/lib/esm/core-react/enums/Alignment.js.map +1 -1
  240. package/lib/esm/core-react/enums/CheckBoxState.js.map +1 -1
  241. package/lib/esm/core-react/enums/Orientation.js.map +1 -1
  242. package/lib/esm/core-react/enums/SortDirection.js.map +1 -1
  243. package/lib/esm/core-react/enums/TimeFormat.js.map +1 -1
  244. package/lib/esm/core-react/expandable/ExpandableList.js.map +1 -1
  245. package/lib/esm/core-react/expandable/ExpandableList.scss +8 -8
  246. package/lib/esm/core-react/expandable/classes.scss +7 -7
  247. package/lib/esm/core-react/expandable/index.scss +5 -5
  248. package/lib/esm/core-react/expandable/list.scss +35 -35
  249. package/lib/esm/core-react/focus/ItemKeyboardNavigator.js.map +1 -1
  250. package/lib/esm/core-react/focustrap/FocusTrap.js.map +1 -1
  251. package/lib/esm/core-react/hocs/withIsPressed.js.map +1 -1
  252. package/lib/esm/core-react/hocs/withOnOutsideClick.js.map +1 -1
  253. package/lib/esm/core-react/hocs/withTimeout.js.map +1 -1
  254. package/lib/esm/core-react/icons/ConditionalIconItem.js.map +1 -1
  255. package/lib/esm/core-react/icons/IconComponent.js.map +1 -1
  256. package/lib/esm/core-react/icons/IconComponent.scss +20 -20
  257. package/lib/esm/core-react/icons/SvgPath.js.map +1 -1
  258. package/lib/esm/core-react/icons/SvgPath.scss +15 -15
  259. package/lib/esm/core-react/icons/WebFontIcon.js.map +1 -1
  260. package/lib/esm/core-react/icons/WebFontIcon.scss +17 -17
  261. package/lib/esm/core-react/icons/classes.scss +10 -10
  262. package/lib/esm/core-react/icons/index.scss +6 -6
  263. package/lib/esm/core-react/icons/mixins.scss +25 -25
  264. package/lib/esm/core-react/icons/variables.scss +12 -12
  265. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.js.map +1 -1
  266. package/lib/esm/core-react/imagecheckbox/ImageCheckBox.scss +54 -54
  267. package/lib/esm/core-react/index.scss +21 -21
  268. package/lib/esm/core-react/inputs/Input.js.map +1 -1
  269. package/lib/esm/core-react/inputs/InputLabel.js.map +1 -1
  270. package/lib/esm/core-react/inputs/InputStatus.js.map +1 -1
  271. package/lib/esm/core-react/inputs/LabeledComponentProps.js.map +1 -1
  272. package/lib/esm/core-react/inputs/classes.scss +8 -8
  273. package/lib/esm/core-react/inputs/iconinput/IconInput.js.map +1 -1
  274. package/lib/esm/core-react/inputs/iconinput/IconInput.scss +35 -35
  275. package/lib/esm/core-react/inputs/index.scss +9 -9
  276. package/lib/esm/core-react/inputs/input-label.scss +90 -90
  277. package/lib/esm/core-react/inputs/input.scss +58 -58
  278. package/lib/esm/core-react/inputs/numberinput/NumberInput.js.map +1 -1
  279. package/lib/esm/core-react/inputs/numberinput/NumberInput.scss +88 -88
  280. package/lib/esm/core-react/inputs/variables.scss +38 -38
  281. package/lib/esm/core-react/layout-variables.scss +17 -17
  282. package/lib/esm/core-react/listbox/Listbox.js.map +1 -1
  283. package/lib/esm/core-react/listbox/Listbox.scss +54 -54
  284. package/lib/esm/core-react/loading/LoadingBar.js.map +1 -1
  285. package/lib/esm/core-react/loading/LoadingBar.scss +29 -29
  286. package/lib/esm/core-react/loading/LoadingPrompt.js.map +1 -1
  287. package/lib/esm/core-react/loading/LoadingPrompt.scss +33 -33
  288. package/lib/esm/core-react/loading/LoadingSpinner.js.map +1 -1
  289. package/lib/esm/core-react/loading/LoadingSpinner.scss +26 -26
  290. package/lib/esm/core-react/loading/LoadingStatus.js.map +1 -1
  291. package/lib/esm/core-react/loading/LoadingStatus.scss +20 -20
  292. package/lib/esm/core-react/loading/index.scss +5 -5
  293. package/lib/esm/core-react/loading/mixins.scss +57 -57
  294. package/lib/esm/core-react/messagebox/MessageBox.js.map +1 -1
  295. package/lib/esm/core-react/messagebox/MessageBox.scss +56 -56
  296. package/lib/esm/core-react/notification/MessageRenderer.js.map +1 -1
  297. package/lib/esm/core-react/notification/MessageType.js.map +1 -1
  298. package/lib/esm/core-react/popup/Popup.js.map +1 -1
  299. package/lib/esm/core-react/popup/Popup.scss +240 -240
  300. package/lib/esm/core-react/radialmenu/Annulus.js.map +1 -1
  301. package/lib/esm/core-react/radialmenu/RadialMenu.js.map +1 -1
  302. package/lib/esm/core-react/radialmenu/RadialMenu.scss +55 -55
  303. package/lib/esm/core-react/searchbox/SearchBox.js.map +1 -1
  304. package/lib/esm/core-react/searchbox/SearchBox.scss +47 -47
  305. package/lib/esm/core-react/settings/SettingsContainer.js.map +1 -1
  306. package/lib/esm/core-react/settings/SettingsContainer.scss +68 -68
  307. package/lib/esm/core-react/settings/SettingsManager.js.map +1 -1
  308. package/lib/esm/core-react/style/baseline.scss +11 -11
  309. package/lib/esm/core-react/style/breakpoints.scss +41 -41
  310. package/lib/esm/core-react/style/colors.scss +77 -77
  311. package/lib/esm/core-react/style/index.scss +10 -10
  312. package/lib/esm/core-react/style/mixins.scss +27 -27
  313. package/lib/esm/core-react/style/opacity.scss +16 -16
  314. package/lib/esm/core-react/style/themecolors.scss +123 -123
  315. package/lib/esm/core-react/tabs/Tabs.js.map +1 -1
  316. package/lib/esm/core-react/tabs/VerticalTabs.js.map +1 -1
  317. package/lib/esm/core-react/tabs/classes.scss +7 -7
  318. package/lib/esm/core-react/tabs/index.scss +5 -5
  319. package/lib/esm/core-react/tabs/tabs.scss +96 -96
  320. package/lib/esm/core-react/tabs/vertical.scss +51 -51
  321. package/lib/esm/core-react/text/BlockText.js.map +1 -1
  322. package/lib/esm/core-react/text/BodyText.js.map +1 -1
  323. package/lib/esm/core-react/text/DisabledText.js.map +1 -1
  324. package/lib/esm/core-react/text/FilteredText.js.map +1 -1
  325. package/lib/esm/core-react/text/FilteredText.scss +10 -10
  326. package/lib/esm/core-react/text/MutedText.js.map +1 -1
  327. package/lib/esm/core-react/text/StyledText.js.map +1 -1
  328. package/lib/esm/core-react/text/TextProps.js.map +1 -1
  329. package/lib/esm/core-react/text/block.scss +15 -15
  330. package/lib/esm/core-react/text/body.scss +13 -13
  331. package/lib/esm/core-react/text/classes.scss +10 -10
  332. package/lib/esm/core-react/text/disabled.scss +10 -10
  333. package/lib/esm/core-react/text/index.scss +10 -10
  334. package/lib/esm/core-react/text/mixins.scss +24 -24
  335. package/lib/esm/core-react/text/muted.scss +10 -10
  336. package/lib/esm/core-react/tree/Branch.js.map +1 -1
  337. package/lib/esm/core-react/tree/Branch.scss +12 -12
  338. package/lib/esm/core-react/tree/ExpansionToggle.js.map +1 -1
  339. package/lib/esm/core-react/tree/ExpansionToggle.scss +32 -32
  340. package/lib/esm/core-react/tree/Node.js.map +1 -1
  341. package/lib/esm/core-react/tree/Node.scss +68 -68
  342. package/lib/esm/core-react/tree/Placeholder.js.map +1 -1
  343. package/lib/esm/core-react/tree/Placeholder.scss +17 -17
  344. package/lib/esm/core-react/tree/Tree.js.map +1 -1
  345. package/lib/esm/core-react/tree/Tree.scss +21 -21
  346. package/lib/esm/core-react/uistate/LocalStateStorage.js.map +1 -1
  347. package/lib/esm/core-react/uistate/UiStateEntry.js.map +1 -1
  348. package/lib/esm/core-react/uistate/UiStateStorage.js.map +1 -1
  349. package/lib/esm/core-react/utils/IconHelper.js.map +1 -1
  350. package/lib/esm/core-react/utils/IconWebComponent.js.map +1 -1
  351. package/lib/esm/core-react/utils/Point.js.map +1 -1
  352. package/lib/esm/core-react/utils/Props.js.map +1 -1
  353. package/lib/esm/core-react/utils/Rectangle.js.map +1 -1
  354. package/lib/esm/core-react/utils/ScrollPositionMaintainer.js.map +1 -1
  355. package/lib/esm/core-react/utils/Size.js.map +1 -1
  356. package/lib/esm/core-react/utils/Timer.js.map +1 -1
  357. package/lib/esm/core-react/utils/UiGeometry.js.map +1 -1
  358. package/lib/esm/core-react/utils/flattenChildren.js.map +1 -1
  359. package/lib/esm/core-react/utils/getBestBWContrastColor.js.map +1 -1
  360. package/lib/esm/core-react/utils/getCssVariable.js.map +1 -1
  361. package/lib/esm/core-react/utils/getDisplayName.js.map +1 -1
  362. package/lib/esm/core-react/utils/getUserColor.js.map +1 -1
  363. package/lib/esm/core-react/utils/hooks/ResizeObserverPolyfill.js.map +1 -1
  364. package/lib/esm/core-react/utils/hooks/useCrossOriginPopup.js.map +1 -1
  365. package/lib/esm/core-react/utils/hooks/useDisposable.js.map +1 -1
  366. package/lib/esm/core-react/utils/hooks/useEffectSkipFirst.js.map +1 -1
  367. package/lib/esm/core-react/utils/hooks/useEventListener.js.map +1 -1
  368. package/lib/esm/core-react/utils/hooks/useInterval.js.map +1 -1
  369. package/lib/esm/core-react/utils/hooks/useLifecycleLogging.js.map +1 -1
  370. package/lib/esm/core-react/utils/hooks/useOnOutsideClick.js.map +1 -1
  371. package/lib/esm/core-react/utils/hooks/useProximityToMouse.js.map +1 -1
  372. package/lib/esm/core-react/utils/hooks/useRefEffect.js.map +1 -1
  373. package/lib/esm/core-react/utils/hooks/useRefState.js.map +1 -1
  374. package/lib/esm/core-react/utils/hooks/useRefs.js.map +1 -1
  375. package/lib/esm/core-react/utils/hooks/useResizeObserver.js.map +1 -1
  376. package/lib/esm/core-react/utils/hooks/useTargeted.js.map +1 -1
  377. package/lib/esm/core-react/utils/hooks/useThrottledFn.js.map +1 -1
  378. package/lib/esm/core-react/utils/hooks/useWidgetOpacityContext.js.map +1 -1
  379. package/lib/esm/core-react/utils/isPromiseLike.js.map +1 -1
  380. package/lib/esm/core-react/utils/shallowDiffers.js.map +1 -1
  381. package/lib/esm/core-react/utils/typeUtils.js.map +1 -1
  382. package/lib/esm/core-react.js.map +1 -1
  383. package/lib/public/locales/en/UiCore.json +30 -30
  384. package/package.json +1 -1
@@ -1,38 +1,38 @@
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 "../style/baseline";
6
- @import "../style/themecolors";
7
-
8
- // cspell:ignore unbordered
9
-
10
- $uicore-inputs-height: 22px;
11
- $uicore-inputs-height-large: 40px;
12
- $uicore-line-height: calc(var(--iui-size-s) * 1.4);
13
- $uicore-bordered-padding: calc(#{$uicore-bordered-padding} * 0.5);
14
- $uicore-unbordered-padding: calc(#{$uicore-unbordered-padding} * 0.5);
15
-
16
- $uicore-inputs-padding: calc(
17
- (#{$uicore-inputs-height} - #{$uicore-line-height}) * 0.5
18
- );
19
- $uicore-inputs-padding-large: calc(
20
- (#{$uicore-inputs-height-large} - #{$uicore-line-height}) * 0.5
21
- );
22
- $uicore-inputs-padding-bordered: calc(#{$uicore-inputs-padding} - 2px);
23
- $uicore-inputs-padding-bordered-large: calc(
24
- #{$uicore-inputs-padding-large} - 2px
25
- );
26
-
27
- $uicore-inputs-margin: calc(
28
- (#{$uicore-line-height} * 2 - #{$uicore-inputs-height}) * 0.5
29
- );
30
- $uicore-inputs-margin-large: calc(
31
- (#{$uicore-line-height} * 3 - #{$uicore-inputs-height-large}) * 0.5
32
- );
33
-
34
- $uicore-inputs-border-color: $buic-inputs-border;
35
-
36
- $uicore-inputs-focus-boxshadow: $buic-focus-boxshadow 0px 0px 0px 2px;
37
-
38
- $uicore-iui-input-padding: var(--iui-size-3xs) var(--iui-size-xs);
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 "../style/baseline";
6
+ @import "../style/themecolors";
7
+
8
+ // cspell:ignore unbordered
9
+
10
+ $uicore-inputs-height: 22px;
11
+ $uicore-inputs-height-large: 40px;
12
+ $uicore-line-height: calc(var(--iui-size-s) * 1.4);
13
+ $uicore-bordered-padding: calc(#{$uicore-bordered-padding} * 0.5);
14
+ $uicore-unbordered-padding: calc(#{$uicore-unbordered-padding} * 0.5);
15
+
16
+ $uicore-inputs-padding: calc(
17
+ (#{$uicore-inputs-height} - #{$uicore-line-height}) * 0.5
18
+ );
19
+ $uicore-inputs-padding-large: calc(
20
+ (#{$uicore-inputs-height-large} - #{$uicore-line-height}) * 0.5
21
+ );
22
+ $uicore-inputs-padding-bordered: calc(#{$uicore-inputs-padding} - 2px);
23
+ $uicore-inputs-padding-bordered-large: calc(
24
+ #{$uicore-inputs-padding-large} - 2px
25
+ );
26
+
27
+ $uicore-inputs-margin: calc(
28
+ (#{$uicore-line-height} * 2 - #{$uicore-inputs-height}) * 0.5
29
+ );
30
+ $uicore-inputs-margin-large: calc(
31
+ (#{$uicore-line-height} * 3 - #{$uicore-inputs-height-large}) * 0.5
32
+ );
33
+
34
+ $uicore-inputs-border-color: $buic-inputs-border;
35
+
36
+ $uicore-inputs-focus-boxshadow: $buic-focus-boxshadow 0px 0px 0px 2px;
37
+
38
+ $uicore-iui-input-padding: var(--iui-size-3xs) var(--iui-size-xs);
@@ -1,17 +1,17 @@
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 "./z-index";
6
-
7
- :root {
8
-
9
- /** Default Widget Opacity */
10
- --buic-widget-opacity: 0.90;
11
- /** Default Toolbar Opacity */
12
- --buic-toolbar-opacity: 0.50;
13
-
14
- /** CSS variables for each z-index layer */
15
- @include uicore-z-index-variables();
16
-
17
- }
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 "./z-index";
6
+
7
+ :root {
8
+
9
+ /** Default Widget Opacity */
10
+ --buic-widget-opacity: 0.90;
11
+ /** Default Toolbar Opacity */
12
+ --buic-toolbar-opacity: 0.50;
13
+
14
+ /** CSS variables for each z-index layer */
15
+ @include uicore-z-index-variables();
16
+
17
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Listbox.js","sourceRoot":"","sources":["../../../../src/core-react/listbox/Listbox.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\nimport * as React from \"react\";\r\nimport classnames from \"classnames\";\r\n\r\nimport \"./Listbox.scss\";\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { SpecialKey } from \"@itwin/appui-abstract\";\r\n\r\n/** Ideas borrowed from https://reacttraining.com/reach-ui/listbox */\r\n\r\n/**\r\n * `Listbox` value.\r\n * @alpha\r\n */\r\nexport type ListboxValue = string;\r\n\r\n/**\r\n * `Listbox` Props.\r\n * @alpha\r\n */\r\nexport interface ListboxProps extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement> {\r\n id?: string;\r\n selectedValue?: ListboxValue;\r\n ariaLabel?: any;\r\n ariaLabelledBy?: any;\r\n onListboxValueChange?: ((newValue: ListboxValue, isControlOrCommandPressed?: boolean) => void);\r\n}\r\n\r\n/**\r\n * `ListboxItem` Props.\r\n * @alpha\r\n */\r\nexport interface ListboxItemProps extends React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement> {\r\n /** The unique item's value. */\r\n value: ListboxValue;\r\n /** set if item is disabled. */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * `Listbox` Context.\r\n * @alpha\r\n */\r\nexport interface ListboxContextProps {\r\n listboxId?: string;\r\n listboxValue?: ListboxValue;\r\n focusValue?: ListboxValue;\r\n onListboxValueChange: ((newValue: ListboxValue, isControlOrCommandPressed?: boolean) => void);\r\n listboxRef?: React.RefObject<HTMLUListElement>;\r\n}\r\n\r\n/**\r\n * Context set up by listbox for use by `ListboxItems` .\r\n * @alpha\r\n */\r\n// istanbul ignore next\r\nexport const ListboxContext = React.createContext<ListboxContextProps>({ onListboxValueChange: (_newValue: ListboxValue | undefined) => { } }); // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\nfunction makeId(...args: Array<string | number | null | undefined>) {\r\n return args.filter((val) => val != null).join(\"--\");\r\n}\r\n\r\nfunction getOptionValueArray(childNodes: React.ReactNode): ListboxItemProps[] {\r\n return React.Children.toArray(childNodes).filter((node) => React.isValidElement(node) && node.props.value).map((optionNode) => ((optionNode as React.ReactElement).props as ListboxItemProps));\r\n}\r\n\r\nfunction processKeyboardNavigation(optionValues: ListboxItemProps[], itemIndex: number, key: string): [number, boolean] {\r\n let keyProcessed = false;\r\n let newIndex = itemIndex >= 0 ? itemIndex : 0;\r\n\r\n // Note: In aria example Page Up/Down just moves up or down by one item. See https://www.w3.org/TR/wai-aria-practices-1.1/examples/listbox/js/listbox.js\r\n if (key === SpecialKey.ArrowDown || key === SpecialKey.PageDown) {\r\n for (let i = itemIndex + 1; i < optionValues.length; i++) {\r\n if (!optionValues[i].disabled) {\r\n newIndex = i;\r\n break;\r\n }\r\n }\r\n keyProcessed = true;\r\n } else if (key === SpecialKey.ArrowUp || key === SpecialKey.PageUp) {\r\n for (let i = itemIndex - 1; i >= 0; i--) {\r\n if (!optionValues[i].disabled) {\r\n newIndex = i;\r\n break;\r\n }\r\n }\r\n keyProcessed = true;\r\n } else if (key === SpecialKey.Home) {\r\n for (let i = 0; i < optionValues.length; i++) {\r\n if (!optionValues[i].disabled) {\r\n newIndex = i;\r\n break;\r\n }\r\n }\r\n keyProcessed = true;\r\n } else if (key === SpecialKey.End) {\r\n for (let i = optionValues.length - 1; i >= 0; i--) {\r\n if (!optionValues[i].disabled) {\r\n newIndex = i;\r\n break;\r\n }\r\n }\r\n keyProcessed = true;\r\n }\r\n return [newIndex, keyProcessed];\r\n}\r\n\r\n/**\r\n * Single select `Listbox` component\r\n * @alpha\r\n */\r\nexport function Listbox(props: ListboxProps) {\r\n const { ariaLabel, ariaLabelledBy, id, children, selectedValue, className, onListboxValueChange, onKeyDown, ...otherProps } = props;\r\n const listRef = React.useRef<HTMLUListElement>(null);\r\n const [listId] = React.useState(() => { return id ?? Guid.createValue(); });\r\n const optionValues = React.useMemo(() => getOptionValueArray(children), [children]);\r\n const classes = React.useMemo(() => classnames(\"core-listbox\", className), [className]);\r\n const [currentValue, setCurrentValue] = React.useState<ListboxValue | undefined>(selectedValue);\r\n const [focusValue, setFocusValue] = React.useState<ListboxValue | undefined>(currentValue);\r\n\r\n React.useEffect(() => {\r\n setCurrentValue(selectedValue);\r\n setFocusValue(selectedValue);\r\n }, [selectedValue]);\r\n\r\n const scrollTopRef = React.useRef(0);\r\n const handleValueChange = React.useCallback((newValue: ListboxValue, isControlOrCommandPressed?: boolean) => {\r\n // istanbul ignore else\r\n if (newValue !== currentValue) {\r\n setCurrentValue(newValue);\r\n setFocusValue(newValue);\r\n if (onListboxValueChange)\r\n onListboxValueChange(newValue, isControlOrCommandPressed);\r\n }\r\n }, [setCurrentValue, currentValue, onListboxValueChange]);\r\n\r\n const focusOption = React.useCallback((itemIndex: number) => {\r\n // istanbul ignore else\r\n if (itemIndex >= 0 && itemIndex < optionValues.length) {\r\n const newSelection = optionValues[itemIndex];\r\n const listElement = listRef.current as HTMLUListElement;\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n const optionToFocus = listElement.querySelector(`li[data-value=\"${newSelection.value}\"]`) as HTMLLIElement | null;\r\n // istanbul ignore else\r\n if (optionToFocus && listElement) {\r\n let newScrollTop = listElement.scrollTop;\r\n\r\n // istanbul ignore next\r\n if (listElement.scrollHeight > listElement.clientHeight) {\r\n const scrollBottom = listElement.clientHeight + listElement.scrollTop;\r\n const elementBottom = optionToFocus.offsetTop + optionToFocus.offsetHeight;\r\n if (elementBottom > scrollBottom) {\r\n newScrollTop = elementBottom - listElement.clientHeight;\r\n } else if (optionToFocus.offsetTop < listElement.scrollTop) {\r\n newScrollTop = optionToFocus.offsetTop;\r\n }\r\n scrollTopRef.current = newScrollTop;\r\n }\r\n setFocusValue(newSelection.value);\r\n }\r\n }\r\n }, [optionValues]);\r\n\r\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLUListElement>) => {\r\n if (optionValues.length < 1)\r\n return;\r\n\r\n const itemIndex = (undefined === focusValue) ? -1 : optionValues.findIndex((optionValue) => ((optionValue.value === focusValue)));\r\n\r\n if (event.key === SpecialKey.Space) {\r\n event.preventDefault();\r\n // istanbul ignore else\r\n if (focusValue)\r\n handleValueChange(focusValue, event.getModifierState(\"Control\") || event.getModifierState(\"Meta\")); // Control or Command\r\n return;\r\n } else {\r\n const [newItemIndex, keyProcessed] = processKeyboardNavigation(optionValues, itemIndex, event.key);\r\n // istanbul ignore else\r\n if (keyProcessed) {\r\n event.preventDefault();\r\n focusOption(newItemIndex);\r\n return;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (onKeyDown)\r\n onKeyDown(event);\r\n }, [focusValue, optionValues, focusOption, onKeyDown, handleValueChange]);\r\n\r\n const isInitialMount = React.useRef(true);\r\n\r\n React.useEffect(() => {\r\n const list = listRef.current as HTMLUListElement;\r\n\r\n if (isInitialMount.current) {\r\n isInitialMount.current = false;\r\n\r\n if (undefined !== focusValue) {\r\n const itemIndex = optionValues.findIndex((optionValue) => (optionValue.value === focusValue));\r\n focusOption(itemIndex);\r\n }\r\n } else {\r\n list.scrollTop = scrollTopRef.current;\r\n }\r\n }, [focusValue, focusOption, optionValues]);\r\n\r\n // istanbul ignore next\r\n const handleOnScroll = React.useCallback((_event: React.UIEvent<HTMLUListElement, UIEvent>) => {\r\n if (listRef.current)\r\n scrollTopRef.current = listRef.current.scrollTop;\r\n }, []);\r\n\r\n // istanbul ignore next\r\n const handleOnFocus = React.useCallback((_event: React.FocusEvent<HTMLUListElement>) => {\r\n if (!focusValue || 0 === focusValue.length) {\r\n if (currentValue) {\r\n setFocusValue(currentValue);\r\n } else {\r\n if (optionValues.length > 0)\r\n setFocusValue(optionValues[0].value);\r\n }\r\n }\r\n }, [currentValue, focusValue, optionValues]);\r\n\r\n return <ul\r\n className={classes}\r\n // If the listbox is not part of another widget, then it has a visible\r\n // label referenced by `aria-labelledby` on the element with role\r\n // `listbox`.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\r\n // If an `aria-label` is passed, we should skip `aria-labelledby` to\r\n // avoid confusion.\r\n aria-labelledby={ariaLabel ? undefined : ariaLabelledBy}\r\n aria-label={ariaLabel}\r\n // An element that contains or owns all the listbox options has role\r\n // listbox.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\r\n role=\"listbox\"\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/examples/listbox/listbox-collapsible.html\r\n tabIndex={0}\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/examples/listbox/listbox-scrollable.html\r\n aria-activedescendant={makeId(currentValue, listId)}\r\n {...otherProps}\r\n ref={listRef}\r\n id={listId}\r\n onKeyDown={handleKeyDown}\r\n onScroll={handleOnScroll}\r\n data-value={currentValue}\r\n data-focusvalue={focusValue}\r\n onFocus={handleOnFocus}\r\n >\r\n <ListboxContext.Provider\r\n value={{\r\n listboxValue: currentValue,\r\n focusValue,\r\n listboxId: listId,\r\n onListboxValueChange: handleValueChange,\r\n listboxRef: listRef,\r\n }}\r\n >\r\n {children}\r\n </ListboxContext.Provider>\r\n </ul>;\r\n}\r\n\r\n/**\r\n * `ListboxItem` component.\r\n * @alpha\r\n */\r\nexport function ListboxItem(props: ListboxItemProps) {\r\n const {\r\n children,\r\n value,\r\n className,\r\n disabled,\r\n ...otherProps\r\n } = props;\r\n\r\n const {\r\n listboxValue,\r\n focusValue,\r\n listboxId,\r\n onListboxValueChange,\r\n } = React.useContext(ListboxContext);\r\n\r\n const hasFocus = focusValue === value;\r\n\r\n const classes = React.useMemo(() => classnames(\"core-listbox-item\", hasFocus && \"focused\", className), [className, hasFocus]);\r\n const itemRef = React.useRef<HTMLLIElement>(null);\r\n const isSelected = listboxValue === value;\r\n\r\n const handleClick = React.useCallback((event: React.MouseEvent<HTMLLIElement, MouseEvent>) => {\r\n event.preventDefault();\r\n // istanbul ignore next\r\n const selectedValue = event.currentTarget?.dataset?.value;\r\n // istanbul ignore else\r\n if (undefined !== selectedValue) {\r\n onListboxValueChange(selectedValue, event.ctrlKey);\r\n }\r\n }, [onListboxValueChange]);\r\n\r\n const getItemId = React.useCallback(() => {\r\n return makeId(value, listboxId);\r\n }, [listboxId, value]);\r\n\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <li\r\n // In a single-select listbox, the selected option has `aria-selected`\r\n // set to `true`.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\r\n aria-selected={isSelected}\r\n // Applicable to all host language elements regardless of whether a\r\n // `role` is applied.\r\n // https://www.w3.org/WAI/PF/aria/states_and_properties#global_states_header\r\n aria-disabled={disabled || undefined}\r\n // Each option in the listbox has role `option` and is a DOM descendant\r\n // of the element with role `listbox`.\r\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\r\n role=\"option\"\r\n className={classes}\r\n {...otherProps}\r\n ref={itemRef}\r\n id={getItemId()}\r\n // used for css styling\r\n data-value={value}\r\n onClick={handleClick}\r\n >\r\n {children}\r\n </li>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"file":"Listbox.js","sourceRoot":"","sources":["../../../../src/core-react/listbox/Listbox.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA6CnD;;;GAGG;AACH,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAsB,EAAE,oBAAoB,EAAE,CAAC,SAAmC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D;AAE3M,SAAS,MAAM,CAAC,GAAG,IAA+C;IAChE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA2B;IACtD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAG,UAAiC,CAAC,KAA0B,CAAC,CAAC;AACjM,CAAC;AAED,SAAS,yBAAyB,CAAC,YAAgC,EAAE,SAAiB,EAAE,GAAW;IACjG,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,QAAQ,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,wJAAwJ;IACxJ,IAAI,GAAG,KAAK,UAAU,CAAC,SAAS,IAAI,GAAG,KAAK,UAAU,CAAC,QAAQ,EAAE;QAC/D,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC7B,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;aACP;SACF;QACD,YAAY,GAAG,IAAI,CAAC;KACrB;SAAM,IAAI,GAAG,KAAK,UAAU,CAAC,OAAO,IAAI,GAAG,KAAK,UAAU,CAAC,MAAM,EAAE;QAClE,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC7B,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;aACP;SACF;QACD,YAAY,GAAG,IAAI,CAAC;KACrB;SAAM,IAAI,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC7B,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;aACP;SACF;QACD,YAAY,GAAG,IAAI,CAAC;KACrB;SAAM,IAAI,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE;QACjC,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC7B,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;aACP;SACF;QACD,YAAY,GAAG,IAAI,CAAC;KACrB;IACD,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACpI,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACxF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA2B,aAAa,CAAC,CAAC;IAChG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA2B,YAAY,CAAC,CAAC;IAE3F,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,eAAe,CAAC,aAAa,CAAC,CAAC;QAC/B,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,QAAsB,EAAE,yBAAmC,EAAE,EAAE;QAC1G,uBAAuB;QACvB,IAAI,QAAQ,KAAK,YAAY,EAAE;YAC7B,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,oBAAoB;gBACtB,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;SAC7D;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QAC1D,uBAAuB;QACvB,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE;YACrD,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,OAA2B,CAAC;YACxD,4EAA4E;YAC5E,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,kBAAkB,YAAY,CAAC,KAAK,IAAI,CAAyB,CAAC;YAClH,uBAAuB;YACvB,IAAI,aAAa,IAAI,WAAW,EAAE;gBAChC,IAAI,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC;gBAEzC,uBAAuB;gBACvB,IAAI,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE;oBACvD,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC;oBACtE,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC;oBAC3E,IAAI,aAAa,GAAG,YAAY,EAAE;wBAChC,YAAY,GAAG,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC;qBACzD;yBAAM,IAAI,aAAa,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE;wBAC1D,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC;qBACxC;oBACD,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC;iBACrC;gBACD,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACnC;SACF;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAA4C,EAAE,EAAE;QACvF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YACzB,OAAO;QAET,MAAM,SAAS,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;QAElI,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,KAAK,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,uBAAuB;YACvB,IAAI,UAAU;gBACZ,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,qBAAqB;YAC5H,OAAO;SACR;aAAM;YACL,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,yBAAyB,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACnG,uBAAuB;YACvB,IAAI,YAAY,EAAE;gBAChB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1B,OAAO;aACR;SACF;QAED,uBAAuB;QACvB,IAAI,SAAS;YACX,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,OAAO,CAAC,OAA2B,CAAC;QAEjD,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1B,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;YAE/B,IAAI,SAAS,KAAK,UAAU,EAAE;gBAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC;gBAC9F,WAAW,CAAC,SAAS,CAAC,CAAC;aACxB;SACF;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;SACvC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5C,uBAAuB;IACvB,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,MAAgD,EAAE,EAAE;QAC5F,IAAI,OAAO,CAAC,OAAO;YACjB,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,uBAAuB;IACvB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,MAA0C,EAAE,EAAE;QACrF,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE;YAC1C,IAAI,YAAY,EAAE;gBAChB,aAAa,CAAC,YAAY,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;oBACzB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACxC;SACF;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IAE7C,OAAO,4BACL,SAAS,EAAE,OAAO,qBAOD,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,gBAC3C,SAAS;QACrB,oEAAoE;QACpE,WAAW;QACX,wDAAwD;QACxD,IAAI,EAAC,SAAS;QACd,yFAAyF;QACzF,QAAQ,EAAE,CAAC,2BAEY,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAC/C,UAAU,EACd,GAAG,EAAE,OAAO,EACZ,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,cAAc,gBACZ,YAAY,qBACP,UAAU,EAC3B,OAAO,EAAE,aAAa;QAEtB,oBAAC,cAAc,CAAC,QAAQ,IACtB,KAAK,EAAE;gBACL,YAAY,EAAE,YAAY;gBAC1B,UAAU;gBACV,SAAS,EAAE,MAAM;gBACjB,oBAAoB,EAAE,iBAAiB;gBACvC,UAAU,EAAE,OAAO;aACpB,IAEA,QAAQ,CACe,CACvB,CAAC;AACR,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EACJ,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,UAAU,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,oBAAoB,GACrB,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,UAAU,KAAK,KAAK,CAAC;IAEtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,QAAQ,IAAI,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9H,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,YAAY,KAAK,KAAK,CAAC;IAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAkD,EAAE,EAAE;QAC3F,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,uBAAuB;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;QAC1D,uBAAuB;QACvB,IAAI,SAAS,KAAK,aAAa,EAAE;YAC/B,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACpD;IACH,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACvC,OAAO,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvB,OAAO;IACL,iEAAiE;IACjE,6CAIiB,UAAU,mBAIV,QAAQ,IAAI,SAAS;QACpC,uEAAuE;QACvE,sCAAsC;QACtC,wDAAwD;QACxD,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,OAAO,KACd,UAAU,EACd,GAAG,EAAE,OAAO,EACZ,EAAE,EAAE,SAAS,EAAE,gBAEH,KAAK,EACjB,OAAO,EAAE,WAAW,IAEnB,QAAQ,CACN,CACN,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport * as React from \"react\";\nimport classnames from \"classnames\";\n\nimport \"./Listbox.scss\";\nimport { Guid } from \"@itwin/core-bentley\";\nimport { SpecialKey } from \"@itwin/appui-abstract\";\n\n/** Ideas borrowed from https://reacttraining.com/reach-ui/listbox */\n\n/**\n * `Listbox` value.\n * @alpha\n */\nexport type ListboxValue = string;\n\n/**\n * `Listbox` Props.\n * @alpha\n */\nexport interface ListboxProps extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement> {\n id?: string;\n selectedValue?: ListboxValue;\n ariaLabel?: any;\n ariaLabelledBy?: any;\n onListboxValueChange?: ((newValue: ListboxValue, isControlOrCommandPressed?: boolean) => void);\n}\n\n/**\n * `ListboxItem` Props.\n * @alpha\n */\nexport interface ListboxItemProps extends React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement> {\n /** The unique item's value. */\n value: ListboxValue;\n /** set if item is disabled. */\n disabled?: boolean;\n}\n\n/**\n * `Listbox` Context.\n * @alpha\n */\nexport interface ListboxContextProps {\n listboxId?: string;\n listboxValue?: ListboxValue;\n focusValue?: ListboxValue;\n onListboxValueChange: ((newValue: ListboxValue, isControlOrCommandPressed?: boolean) => void);\n listboxRef?: React.RefObject<HTMLUListElement>;\n}\n\n/**\n * Context set up by listbox for use by `ListboxItems` .\n * @alpha\n */\n// istanbul ignore next\nexport const ListboxContext = React.createContext<ListboxContextProps>({ onListboxValueChange: (_newValue: ListboxValue | undefined) => { } }); // eslint-disable-line @typescript-eslint/naming-convention\n\nfunction makeId(...args: Array<string | number | null | undefined>) {\n return args.filter((val) => val != null).join(\"--\");\n}\n\nfunction getOptionValueArray(childNodes: React.ReactNode): ListboxItemProps[] {\n return React.Children.toArray(childNodes).filter((node) => React.isValidElement(node) && node.props.value).map((optionNode) => ((optionNode as React.ReactElement).props as ListboxItemProps));\n}\n\nfunction processKeyboardNavigation(optionValues: ListboxItemProps[], itemIndex: number, key: string): [number, boolean] {\n let keyProcessed = false;\n let newIndex = itemIndex >= 0 ? itemIndex : 0;\n\n // Note: In aria example Page Up/Down just moves up or down by one item. See https://www.w3.org/TR/wai-aria-practices-1.1/examples/listbox/js/listbox.js\n if (key === SpecialKey.ArrowDown || key === SpecialKey.PageDown) {\n for (let i = itemIndex + 1; i < optionValues.length; i++) {\n if (!optionValues[i].disabled) {\n newIndex = i;\n break;\n }\n }\n keyProcessed = true;\n } else if (key === SpecialKey.ArrowUp || key === SpecialKey.PageUp) {\n for (let i = itemIndex - 1; i >= 0; i--) {\n if (!optionValues[i].disabled) {\n newIndex = i;\n break;\n }\n }\n keyProcessed = true;\n } else if (key === SpecialKey.Home) {\n for (let i = 0; i < optionValues.length; i++) {\n if (!optionValues[i].disabled) {\n newIndex = i;\n break;\n }\n }\n keyProcessed = true;\n } else if (key === SpecialKey.End) {\n for (let i = optionValues.length - 1; i >= 0; i--) {\n if (!optionValues[i].disabled) {\n newIndex = i;\n break;\n }\n }\n keyProcessed = true;\n }\n return [newIndex, keyProcessed];\n}\n\n/**\n * Single select `Listbox` component\n * @alpha\n */\nexport function Listbox(props: ListboxProps) {\n const { ariaLabel, ariaLabelledBy, id, children, selectedValue, className, onListboxValueChange, onKeyDown, ...otherProps } = props;\n const listRef = React.useRef<HTMLUListElement>(null);\n const [listId] = React.useState(() => { return id ?? Guid.createValue(); });\n const optionValues = React.useMemo(() => getOptionValueArray(children), [children]);\n const classes = React.useMemo(() => classnames(\"core-listbox\", className), [className]);\n const [currentValue, setCurrentValue] = React.useState<ListboxValue | undefined>(selectedValue);\n const [focusValue, setFocusValue] = React.useState<ListboxValue | undefined>(currentValue);\n\n React.useEffect(() => {\n setCurrentValue(selectedValue);\n setFocusValue(selectedValue);\n }, [selectedValue]);\n\n const scrollTopRef = React.useRef(0);\n const handleValueChange = React.useCallback((newValue: ListboxValue, isControlOrCommandPressed?: boolean) => {\n // istanbul ignore else\n if (newValue !== currentValue) {\n setCurrentValue(newValue);\n setFocusValue(newValue);\n if (onListboxValueChange)\n onListboxValueChange(newValue, isControlOrCommandPressed);\n }\n }, [setCurrentValue, currentValue, onListboxValueChange]);\n\n const focusOption = React.useCallback((itemIndex: number) => {\n // istanbul ignore else\n if (itemIndex >= 0 && itemIndex < optionValues.length) {\n const newSelection = optionValues[itemIndex];\n const listElement = listRef.current as HTMLUListElement;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const optionToFocus = listElement.querySelector(`li[data-value=\"${newSelection.value}\"]`) as HTMLLIElement | null;\n // istanbul ignore else\n if (optionToFocus && listElement) {\n let newScrollTop = listElement.scrollTop;\n\n // istanbul ignore next\n if (listElement.scrollHeight > listElement.clientHeight) {\n const scrollBottom = listElement.clientHeight + listElement.scrollTop;\n const elementBottom = optionToFocus.offsetTop + optionToFocus.offsetHeight;\n if (elementBottom > scrollBottom) {\n newScrollTop = elementBottom - listElement.clientHeight;\n } else if (optionToFocus.offsetTop < listElement.scrollTop) {\n newScrollTop = optionToFocus.offsetTop;\n }\n scrollTopRef.current = newScrollTop;\n }\n setFocusValue(newSelection.value);\n }\n }\n }, [optionValues]);\n\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLUListElement>) => {\n if (optionValues.length < 1)\n return;\n\n const itemIndex = (undefined === focusValue) ? -1 : optionValues.findIndex((optionValue) => ((optionValue.value === focusValue)));\n\n if (event.key === SpecialKey.Space) {\n event.preventDefault();\n // istanbul ignore else\n if (focusValue)\n handleValueChange(focusValue, event.getModifierState(\"Control\") || event.getModifierState(\"Meta\")); // Control or Command\n return;\n } else {\n const [newItemIndex, keyProcessed] = processKeyboardNavigation(optionValues, itemIndex, event.key);\n // istanbul ignore else\n if (keyProcessed) {\n event.preventDefault();\n focusOption(newItemIndex);\n return;\n }\n }\n\n // istanbul ignore else\n if (onKeyDown)\n onKeyDown(event);\n }, [focusValue, optionValues, focusOption, onKeyDown, handleValueChange]);\n\n const isInitialMount = React.useRef(true);\n\n React.useEffect(() => {\n const list = listRef.current as HTMLUListElement;\n\n if (isInitialMount.current) {\n isInitialMount.current = false;\n\n if (undefined !== focusValue) {\n const itemIndex = optionValues.findIndex((optionValue) => (optionValue.value === focusValue));\n focusOption(itemIndex);\n }\n } else {\n list.scrollTop = scrollTopRef.current;\n }\n }, [focusValue, focusOption, optionValues]);\n\n // istanbul ignore next\n const handleOnScroll = React.useCallback((_event: React.UIEvent<HTMLUListElement, UIEvent>) => {\n if (listRef.current)\n scrollTopRef.current = listRef.current.scrollTop;\n }, []);\n\n // istanbul ignore next\n const handleOnFocus = React.useCallback((_event: React.FocusEvent<HTMLUListElement>) => {\n if (!focusValue || 0 === focusValue.length) {\n if (currentValue) {\n setFocusValue(currentValue);\n } else {\n if (optionValues.length > 0)\n setFocusValue(optionValues[0].value);\n }\n }\n }, [currentValue, focusValue, optionValues]);\n\n return <ul\n className={classes}\n // If the listbox is not part of another widget, then it has a visible\n // label referenced by `aria-labelledby` on the element with role\n // `listbox`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\n // If an `aria-label` is passed, we should skip `aria-labelledby` to\n // avoid confusion.\n aria-labelledby={ariaLabel ? undefined : ariaLabelledBy}\n aria-label={ariaLabel}\n // An element that contains or owns all the listbox options has role\n // listbox.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\n role=\"listbox\"\n // https://www.w3.org/TR/wai-aria-practices-1.2/examples/listbox/listbox-collapsible.html\n tabIndex={0}\n // https://www.w3.org/TR/wai-aria-practices-1.2/examples/listbox/listbox-scrollable.html\n aria-activedescendant={makeId(currentValue, listId)}\n {...otherProps}\n ref={listRef}\n id={listId}\n onKeyDown={handleKeyDown}\n onScroll={handleOnScroll}\n data-value={currentValue}\n data-focusvalue={focusValue}\n onFocus={handleOnFocus}\n >\n <ListboxContext.Provider\n value={{\n listboxValue: currentValue,\n focusValue,\n listboxId: listId,\n onListboxValueChange: handleValueChange,\n listboxRef: listRef,\n }}\n >\n {children}\n </ListboxContext.Provider>\n </ul>;\n}\n\n/**\n * `ListboxItem` component.\n * @alpha\n */\nexport function ListboxItem(props: ListboxItemProps) {\n const {\n children,\n value,\n className,\n disabled,\n ...otherProps\n } = props;\n\n const {\n listboxValue,\n focusValue,\n listboxId,\n onListboxValueChange,\n } = React.useContext(ListboxContext);\n\n const hasFocus = focusValue === value;\n\n const classes = React.useMemo(() => classnames(\"core-listbox-item\", hasFocus && \"focused\", className), [className, hasFocus]);\n const itemRef = React.useRef<HTMLLIElement>(null);\n const isSelected = listboxValue === value;\n\n const handleClick = React.useCallback((event: React.MouseEvent<HTMLLIElement, MouseEvent>) => {\n event.preventDefault();\n // istanbul ignore next\n const selectedValue = event.currentTarget?.dataset?.value;\n // istanbul ignore else\n if (undefined !== selectedValue) {\n onListboxValueChange(selectedValue, event.ctrlKey);\n }\n }, [onListboxValueChange]);\n\n const getItemId = React.useCallback(() => {\n return makeId(value, listboxId);\n }, [listboxId, value]);\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <li\n // In a single-select listbox, the selected option has `aria-selected`\n // set to `true`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\n aria-selected={isSelected}\n // Applicable to all host language elements regardless of whether a\n // `role` is applied.\n // https://www.w3.org/WAI/PF/aria/states_and_properties#global_states_header\n aria-disabled={disabled || undefined}\n // Each option in the listbox has role `option` and is a DOM descendant\n // of the element with role `listbox`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#Listbox\n role=\"option\"\n className={classes}\n {...otherProps}\n ref={itemRef}\n id={getItemId()}\n // used for css styling\n data-value={value}\n onClick={handleClick}\n >\n {children}\n </li>\n );\n}\n"]}
@@ -1,54 +1,54 @@
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 "../index";
6
-
7
- $uicore-list-item-height: calc(var(--iui-size-s) * 2);
8
-
9
- ul.core-listbox {
10
- list-style: none;
11
- outline: none;
12
- padding: 0;
13
- margin: 0;
14
- box-sizing: border-box;
15
- width: 100%;
16
- height: 100%;
17
- display: flex;
18
- flex-direction: column;
19
- overflow: auto;
20
- color: var(--iui-color-text);
21
- border: 1px solid var(--iui-color-border);
22
- position: relative; // required to properly set scrollTop position
23
-
24
- @include uicore-touch-scrolling;
25
- @include uicore-scrollbar();
26
-
27
- &:focus {
28
- border-color: var(--iui-color-border-accent);
29
-
30
- li.core-listbox-item.focused {
31
- background-color: var(--iui-color-background-accent-muted);
32
- border: 1px solid var(--iui-color-border-accent);
33
- }
34
- }
35
-
36
- li.core-listbox-item {
37
- display: inline-flex;
38
- line-height: $uicore-list-item-height;
39
- padding-left: 4px;
40
-
41
- &[aria-selected="true"] {
42
- background-color: var(--iui-color-background-accent-muted);
43
- }
44
-
45
- &[aria-disabled="true"] {
46
- pointer-events: none;
47
- color: var(--iui-color-text-disabled);
48
- }
49
-
50
- &:hover {
51
- background-color: var(--iui-color-background-hover);
52
- }
53
- }
54
- }
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 "../index";
6
+
7
+ $uicore-list-item-height: calc(var(--iui-size-s) * 2);
8
+
9
+ ul.core-listbox {
10
+ list-style: none;
11
+ outline: none;
12
+ padding: 0;
13
+ margin: 0;
14
+ box-sizing: border-box;
15
+ width: 100%;
16
+ height: 100%;
17
+ display: flex;
18
+ flex-direction: column;
19
+ overflow: auto;
20
+ color: var(--iui-color-text);
21
+ border: 1px solid var(--iui-color-border);
22
+ position: relative; // required to properly set scrollTop position
23
+
24
+ @include uicore-touch-scrolling;
25
+ @include uicore-scrollbar();
26
+
27
+ &:focus {
28
+ border-color: var(--iui-color-border-accent);
29
+
30
+ li.core-listbox-item.focused {
31
+ background-color: var(--iui-color-background-accent-muted);
32
+ border: 1px solid var(--iui-color-border-accent);
33
+ }
34
+ }
35
+
36
+ li.core-listbox-item {
37
+ display: inline-flex;
38
+ line-height: $uicore-list-item-height;
39
+ padding-left: 4px;
40
+
41
+ &[aria-selected="true"] {
42
+ background-color: var(--iui-color-background-accent-muted);
43
+ }
44
+
45
+ &[aria-disabled="true"] {
46
+ pointer-events: none;
47
+ color: var(--iui-color-text-disabled);
48
+ }
49
+
50
+ &:hover {
51
+ background-color: var(--iui-color-background-hover);
52
+ }
53
+ }
54
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingBar.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingBar.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B;;;GAGG;AACH,MAAa,UAAW,SAAQ,KAAK,CAAC,aAA8B;IAKlD,MAAM;QACpB,MAAM,OAAO,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnE,OAAO,CACL,6BAAK,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACrD,6BAAK,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACnE,6BAAK,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAI,CAC/C;YACL,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,8BAAM,SAAS,EAAC,SAAS,IAAE,OAAO,CAAQ,CACpE,CACP,CAAC;IACJ,CAAC;;AAfa,uBAAY,GAA6B;IACrD,SAAS,EAAE,CAAC;CACb,CAAC;SAHS,UAAU;AAmBvB;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Loading\r\n */\r\n\r\nimport \"./LoadingBar.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { CommonProps } from \"../utils/Props\";\r\n\r\n/** Properties for [[LoadingBar]] component\r\n * @public\r\n */\r\nexport interface LoadingBarProps extends CommonProps {\r\n /** Percent */\r\n percent: number;\r\n /** Show percentage (optional) */\r\n showPercentage?: boolean;\r\n /** Height (in pixels) of the loading bar */\r\n barHeight: number;\r\n}\r\n\r\n/**\r\n * A loading bar with optional percentage text.\r\n * @public\r\n */\r\nexport class LoadingBar extends React.PureComponent<LoadingBarProps> {\r\n public static defaultProps: Partial<LoadingBarProps> = {\r\n barHeight: 4,\r\n };\r\n\r\n public override render() {\r\n const percent = `${percentInRange(this.props.percent)}%`;\r\n const containerClass = classnames(this.props.className, \"core-lb\");\r\n return (\r\n <div className={containerClass} style={this.props.style}>\r\n <div className=\"lb-container\" style={{ height: this.props.barHeight }}>\r\n <div className=\"fill\" style={{ width: percent }} />\r\n </div>\r\n {this.props.showPercentage && <span className=\"percent\">{percent}</span>}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n/** Sanity check to keep percentage between 0 & 100\r\n * @internal\r\n */\r\nexport function percentInRange(percent: number): number {\r\n let value = Math.min(percent, 100);\r\n value = Math.max(value, 0);\r\n return value;\r\n}\r\n"]}
1
+ {"version":3,"file":"LoadingBar.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingBar.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B;;;GAGG;AACH,MAAa,UAAW,SAAQ,KAAK,CAAC,aAA8B;IAKlD,MAAM;QACpB,MAAM,OAAO,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnE,OAAO,CACL,6BAAK,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACrD,6BAAK,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACnE,6BAAK,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAI,CAC/C;YACL,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,8BAAM,SAAS,EAAC,SAAS,IAAE,OAAO,CAAQ,CACpE,CACP,CAAC;IACJ,CAAC;;AAfa,uBAAY,GAA6B;IACrD,SAAS,EAAE,CAAC;CACb,CAAC;SAHS,UAAU;AAmBvB;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Loading\n */\n\nimport \"./LoadingBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { CommonProps } from \"../utils/Props\";\n\n/** Properties for [[LoadingBar]] component\n * @public\n */\nexport interface LoadingBarProps extends CommonProps {\n /** Percent */\n percent: number;\n /** Show percentage (optional) */\n showPercentage?: boolean;\n /** Height (in pixels) of the loading bar */\n barHeight: number;\n}\n\n/**\n * A loading bar with optional percentage text.\n * @public\n */\nexport class LoadingBar extends React.PureComponent<LoadingBarProps> {\n public static defaultProps: Partial<LoadingBarProps> = {\n barHeight: 4,\n };\n\n public override render() {\n const percent = `${percentInRange(this.props.percent)}%`;\n const containerClass = classnames(this.props.className, \"core-lb\");\n return (\n <div className={containerClass} style={this.props.style}>\n <div className=\"lb-container\" style={{ height: this.props.barHeight }}>\n <div className=\"fill\" style={{ width: percent }} />\n </div>\n {this.props.showPercentage && <span className=\"percent\">{percent}</span>}\n </div>\n );\n }\n}\n\n/** Sanity check to keep percentage between 0 & 100\n * @internal\n */\nexport function percentInRange(percent: number): number {\n let value = Math.min(percent, 100);\n value = Math.max(value, 0);\n return value;\n}\n"]}
@@ -1,29 +1,29 @@
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 "../style/themecolors";
6
-
7
- .core-lb {
8
- display: flex;
9
- align-items: center;
10
-
11
- > .lb-container {
12
- background-color: $buic-background-5;
13
- flex: 1;
14
-
15
- > .fill {
16
- height: 100%;
17
- background-color: $buic-foreground-primary;
18
- transition: width .3s linear;
19
- }
20
- }
21
-
22
- > .percent {
23
- flex: initial;
24
- opacity: 0.85;
25
- width: 3em;
26
- font-size: .9em;
27
- margin-left: .3em;
28
- }
29
- }
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 "../style/themecolors";
6
+
7
+ .core-lb {
8
+ display: flex;
9
+ align-items: center;
10
+
11
+ > .lb-container {
12
+ background-color: $buic-background-5;
13
+ flex: 1;
14
+
15
+ > .fill {
16
+ height: 100%;
17
+ background-color: $buic-foreground-primary;
18
+ transition: width .3s linear;
19
+ }
20
+ }
21
+
22
+ > .percent {
23
+ flex: initial;
24
+ opacity: 0.85;
25
+ width: 3em;
26
+ font-size: .9em;
27
+ margin-left: .3em;
28
+ }
29
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingPrompt.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingPrompt.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA+BhD;;;GAGG;AACH,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IAWxD,MAAM;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAE/C,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAC7F,8BAAM,SAAS,EAAC,OAAO,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ;YAChD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,8BAAM,SAAS,EAAC,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAQ;YAC3E,aAAa,IAAI,oBAAC,UAAU,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAI;YACjI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACvC,oBAAC,aAAa,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAI;YAC3I,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAC,cAAc,IAAC,aAAa,SAAG,CAAC,CAAC,CAAC,oBAAC,cAAc,OAAG,CAAC;YAC3G,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,oBAAC,MAAM,IAAC,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,aAAiB,CAC7G,CACP,CAAC;IACJ,CAAC;;AAxBa,0BAAY,GAAgC;IACxD,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,KAAK;IAC3B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,EAAE;CACX,CAAC;SATS,aAAa","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 Loading\r\n */\r\n\r\nimport \"./LoadingPrompt.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Button, ProgressLinear } from \"@itwin/itwinui-react\";\r\nimport { LoadingBar } from \"./LoadingBar\";\r\nimport { LoadingSpinner } from \"./LoadingSpinner\";\r\nimport { LoadingStatus } from \"./LoadingStatus\";\r\nimport { CommonProps } from \"../utils/Props\";\r\n\r\n// cspell:ignore loadingprompt\r\n\r\n/** Properties for [[LoadingPrompt]] component\r\n * @public\r\n */\r\nexport interface LoadingPromptProps extends CommonProps {\r\n /** Title */\r\n title: string;\r\n /** Message displayed below the title (optional) */\r\n message?: string;\r\n /** Determine if a percentage bar is displayed (isDeterminate=true), otherwise a loading spinner or indeterminate progress bar is shown. */\r\n isDeterminate: boolean;\r\n /** Show current status and percentage. Default is false (not shown) */\r\n showStatus: boolean;\r\n /** Show cancel button. Default is false (not shown) */\r\n showCancel: boolean;\r\n /** Current loading status text (optional). Only shown if showStatus=true and isDeterminate=true */\r\n status: string;\r\n /** Current percentage. Only used if isDeterminate=true */\r\n percent: number;\r\n /** Show percentage at the end of the loading bar (optional). Only shown if isDeterminate=true and showStatus=false */\r\n showPercentage: boolean;\r\n /** Show indeterminate progress bar instead of loading spinner */\r\n showIndeterminateBar: boolean;\r\n /** Function called when Cancel button is clicked. */\r\n onCancel?: () => void;\r\n}\r\n\r\n/**\r\n * A component to display during loading that optionally shows percentage, status text and a cancel button.\r\n * @public\r\n */\r\nexport class LoadingPrompt extends React.PureComponent<LoadingPromptProps> {\r\n public static defaultProps: Partial<LoadingPromptProps> = {\r\n showPercentage: false,\r\n showStatus: false,\r\n showCancel: false,\r\n isDeterminate: false,\r\n showIndeterminateBar: false,\r\n percent: 0,\r\n status: \"\",\r\n };\r\n\r\n public override render() {\r\n const isDeterminate = this.props.isDeterminate;\r\n\r\n return (\r\n <div className={classnames(\"core-loadingprompt\", this.props.className)} style={this.props.style}>\r\n <span className=\"title\">{this.props.title}</span>\r\n {this.props.message && <span className=\"message\">{this.props.message}</span>}\r\n {isDeterminate && <LoadingBar style={{ width: \"100%\" }} percent={this.props.percent} showPercentage={this.props.showPercentage} />}\r\n {(isDeterminate && this.props.showStatus) &&\r\n <LoadingStatus style={{ marginTop: \".5em\", width: \"100%\", fontSize: \".75em\" }} percent={this.props.percent} message={this.props.status} />}\r\n {!isDeterminate && (this.props.showIndeterminateBar ? <ProgressLinear indeterminate /> : <LoadingSpinner />)}\r\n {this.props.showCancel && <Button className=\"loading-prompt-cancel\" onClick={this.props.onCancel}>Cancel</Button>}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LoadingPrompt.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingPrompt.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA+BhD;;;GAGG;AACH,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IAWxD,MAAM;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAE/C,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAC7F,8BAAM,SAAS,EAAC,OAAO,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ;YAChD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,8BAAM,SAAS,EAAC,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAQ;YAC3E,aAAa,IAAI,oBAAC,UAAU,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAI;YACjI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACvC,oBAAC,aAAa,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAI;YAC3I,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAC,cAAc,IAAC,aAAa,SAAG,CAAC,CAAC,CAAC,oBAAC,cAAc,OAAG,CAAC;YAC3G,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,oBAAC,MAAM,IAAC,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,aAAiB,CAC7G,CACP,CAAC;IACJ,CAAC;;AAxBa,0BAAY,GAAgC;IACxD,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,KAAK;IAC3B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,EAAE;CACX,CAAC;SATS,aAAa","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 Loading\n */\n\nimport \"./LoadingPrompt.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Button, ProgressLinear } from \"@itwin/itwinui-react\";\nimport { LoadingBar } from \"./LoadingBar\";\nimport { LoadingSpinner } from \"./LoadingSpinner\";\nimport { LoadingStatus } from \"./LoadingStatus\";\nimport { CommonProps } from \"../utils/Props\";\n\n// cspell:ignore loadingprompt\n\n/** Properties for [[LoadingPrompt]] component\n * @public\n */\nexport interface LoadingPromptProps extends CommonProps {\n /** Title */\n title: string;\n /** Message displayed below the title (optional) */\n message?: string;\n /** Determine if a percentage bar is displayed (isDeterminate=true), otherwise a loading spinner or indeterminate progress bar is shown. */\n isDeterminate: boolean;\n /** Show current status and percentage. Default is false (not shown) */\n showStatus: boolean;\n /** Show cancel button. Default is false (not shown) */\n showCancel: boolean;\n /** Current loading status text (optional). Only shown if showStatus=true and isDeterminate=true */\n status: string;\n /** Current percentage. Only used if isDeterminate=true */\n percent: number;\n /** Show percentage at the end of the loading bar (optional). Only shown if isDeterminate=true and showStatus=false */\n showPercentage: boolean;\n /** Show indeterminate progress bar instead of loading spinner */\n showIndeterminateBar: boolean;\n /** Function called when Cancel button is clicked. */\n onCancel?: () => void;\n}\n\n/**\n * A component to display during loading that optionally shows percentage, status text and a cancel button.\n * @public\n */\nexport class LoadingPrompt extends React.PureComponent<LoadingPromptProps> {\n public static defaultProps: Partial<LoadingPromptProps> = {\n showPercentage: false,\n showStatus: false,\n showCancel: false,\n isDeterminate: false,\n showIndeterminateBar: false,\n percent: 0,\n status: \"\",\n };\n\n public override render() {\n const isDeterminate = this.props.isDeterminate;\n\n return (\n <div className={classnames(\"core-loadingprompt\", this.props.className)} style={this.props.style}>\n <span className=\"title\">{this.props.title}</span>\n {this.props.message && <span className=\"message\">{this.props.message}</span>}\n {isDeterminate && <LoadingBar style={{ width: \"100%\" }} percent={this.props.percent} showPercentage={this.props.showPercentage} />}\n {(isDeterminate && this.props.showStatus) &&\n <LoadingStatus style={{ marginTop: \".5em\", width: \"100%\", fontSize: \".75em\" }} percent={this.props.percent} message={this.props.status} />}\n {!isDeterminate && (this.props.showIndeterminateBar ? <ProgressLinear indeterminate /> : <LoadingSpinner />)}\n {this.props.showCancel && <Button className=\"loading-prompt-cancel\" onClick={this.props.onCancel}>Cancel</Button>}\n </div>\n );\n }\n}\n"]}
@@ -1,33 +1,33 @@
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 "../style/themecolors";
6
-
7
- // cspell:ignore loadingprompt
8
-
9
- .core-loadingprompt {
10
- height: 100%;
11
- display: flex;
12
- align-items: center;
13
- justify-content: center;
14
- flex-direction: column;
15
-
16
- .title {
17
- font-size: 32px;
18
- font-weight: 600;
19
- margin-bottom: 10px;
20
- color: var(--iui-color-text);
21
- }
22
-
23
- .message {
24
- font-size: 14px;
25
- margin-bottom: 1.75em;
26
- color: var(--iui-color-text);
27
- }
28
- }
29
-
30
- /* cancel button */
31
- .loading-prompt-cancel {
32
- margin-top: 2em;
33
- }
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 "../style/themecolors";
6
+
7
+ // cspell:ignore loadingprompt
8
+
9
+ .core-loadingprompt {
10
+ height: 100%;
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ flex-direction: column;
15
+
16
+ .title {
17
+ font-size: 32px;
18
+ font-weight: 600;
19
+ margin-bottom: 10px;
20
+ color: var(--iui-color-text);
21
+ }
22
+
23
+ .message {
24
+ font-size: 14px;
25
+ margin-bottom: 1.75em;
26
+ color: var(--iui-color-text);
27
+ }
28
+ }
29
+
30
+ /* cancel button */
31
+ .loading-prompt-cancel {
32
+ margin-top: 2em;
33
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingSpinner.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAsB3E;;;GAGG;AACH,MAAa,cAAe,SAAQ,KAAK,CAAC,aAAkC;IAK1D,MAAM;QACpB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5D,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS;YACrB,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,8BAAM,SAAS,EAAC,gBAAgB,IAAE,OAAO,CAAQ;YAC/E,oBAAC,cAAc,IAAC,IAAI,EAAE,IAAI,KAAM,IAAI,EAAE,aAAa,SAAG;YACrD,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,8BAAM,SAAS,EAAC,mBAAmB,IAAE,OAAO,CAAQ,CAC/E,CACP,CAAC;IACJ,CAAC;;AAba,2BAAY,GAAiC;IACzD,YAAY,EAAE,KAAK;CACpB,CAAC;SAHS,cAAc","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Loading\r\n */\r\n\r\nimport \"./LoadingSpinner.scss\";\r\nimport * as React from \"react\";\r\nimport { ProgressRadial, ProgressRadialProps } from \"@itwin/itwinui-react\";\r\n\r\n/** Type for ProgressRadialProps.size\r\n * @public\r\n */\r\nexport type RadialSizeType = ProgressRadialProps[\"size\"];\r\n\r\n/** Properties for [[LoadingSpinner]] component\r\n * @public\r\n */\r\nexport interface LoadingSpinnerProps extends Omit<ProgressRadialProps, \"size\"> {\r\n /** Message (text) displayed */\r\n message?: string;\r\n /** Position the message above or below the spinner (defaults to bottom) */\r\n messageOnTop?: boolean;\r\n /**\r\n * Size of the progress indicator. Defaults to medium size.\r\n * @default ''\r\n */\r\n size?: RadialSizeType;\r\n}\r\n\r\n/**\r\n * A loading spinner component that optionally shows a text message.\r\n * @public\r\n */\r\nexport class LoadingSpinner extends React.PureComponent<LoadingSpinnerProps> {\r\n public static defaultProps: Partial<LoadingSpinnerProps> = {\r\n messageOnTop: false,\r\n };\r\n\r\n public override render() {\r\n const { message, messageOnTop, size, ...rest } = this.props;\r\n return (\r\n <div className=\"core-ls\">\r\n {(message && messageOnTop) && <span className=\"ls-message-top\">{message}</span>}\r\n <ProgressRadial size={size} {...rest} indeterminate />\r\n {(message && !messageOnTop) && <span className=\"ls-message-bottom\">{message}</span>}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingSpinner.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAsB3E;;;GAGG;AACH,MAAa,cAAe,SAAQ,KAAK,CAAC,aAAkC;IAK1D,MAAM;QACpB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5D,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS;YACrB,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,8BAAM,SAAS,EAAC,gBAAgB,IAAE,OAAO,CAAQ;YAC/E,oBAAC,cAAc,IAAC,IAAI,EAAE,IAAI,KAAM,IAAI,EAAE,aAAa,SAAG;YACrD,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,8BAAM,SAAS,EAAC,mBAAmB,IAAE,OAAO,CAAQ,CAC/E,CACP,CAAC;IACJ,CAAC;;AAba,2BAAY,GAAiC;IACzD,YAAY,EAAE,KAAK;CACpB,CAAC;SAHS,cAAc","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Loading\n */\n\nimport \"./LoadingSpinner.scss\";\nimport * as React from \"react\";\nimport { ProgressRadial, ProgressRadialProps } from \"@itwin/itwinui-react\";\n\n/** Type for ProgressRadialProps.size\n * @public\n */\nexport type RadialSizeType = ProgressRadialProps[\"size\"];\n\n/** Properties for [[LoadingSpinner]] component\n * @public\n */\nexport interface LoadingSpinnerProps extends Omit<ProgressRadialProps, \"size\"> {\n /** Message (text) displayed */\n message?: string;\n /** Position the message above or below the spinner (defaults to bottom) */\n messageOnTop?: boolean;\n /**\n * Size of the progress indicator. Defaults to medium size.\n * @default ''\n */\n size?: RadialSizeType;\n}\n\n/**\n * A loading spinner component that optionally shows a text message.\n * @public\n */\nexport class LoadingSpinner extends React.PureComponent<LoadingSpinnerProps> {\n public static defaultProps: Partial<LoadingSpinnerProps> = {\n messageOnTop: false,\n };\n\n public override render() {\n const { message, messageOnTop, size, ...rest } = this.props;\n return (\n <div className=\"core-ls\">\n {(message && messageOnTop) && <span className=\"ls-message-top\">{message}</span>}\n <ProgressRadial size={size} {...rest} indeterminate />\n {(message && !messageOnTop) && <span className=\"ls-message-bottom\">{message}</span>}\n </div>\n );\n }\n}\n"]}
@@ -1,26 +1,26 @@
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 "../style/themecolors";
6
-
7
- .core-ls {
8
- display: flex;
9
- align-items: center;
10
- justify-content: center;
11
- flex-direction: column;
12
-
13
- .ls-message {
14
- color: var(--iui-color-text);
15
- }
16
-
17
- .ls-message-top {
18
- @extend .ls-message;
19
- margin-bottom: var(--iui-size-s);
20
- }
21
-
22
- .ls-message-bottom {
23
- @extend .ls-message;
24
- margin-top: var(--iui-size-s);
25
- }
26
- }
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 "../style/themecolors";
6
+
7
+ .core-ls {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ flex-direction: column;
12
+
13
+ .ls-message {
14
+ color: var(--iui-color-text);
15
+ }
16
+
17
+ .ls-message-top {
18
+ @extend .ls-message;
19
+ margin-bottom: var(--iui-size-s);
20
+ }
21
+
22
+ .ls-message-bottom {
23
+ @extend .ls-message;
24
+ margin-top: var(--iui-size-s);
25
+ }
26
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingStatus.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingStatus.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B;;;GAGG;AACH,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IAMxE,kDAAkD;IAC1C,OAAO,CAAC,OAAe;QAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACvD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;QACpF,OAAO,CACL,6BAAK,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACrD,8BAAM,SAAS,EAAC,wBAAwB,IAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAQ;YACpE,8BAAM,SAAS,EAAC,wBAAwB,IAAE,OAAO,CAAQ,CACrD,CACP,CAAC;IACJ,CAAC;;AArBa,0BAAY,GAAgC;IACxD,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,CAAC;CACX,CAAC;SAJS,aAAa","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 Loading\r\n */\r\n\r\nimport \"./LoadingStatus.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { CommonProps } from \"../utils/Props\";\r\n\r\n/** Properties for [[LoadingStatus]] component\r\n * @public\r\n */\r\nexport interface LoadingStatusProps extends CommonProps {\r\n /** Message (text) displayed */\r\n message: string;\r\n /** Percent displayed (as text) */\r\n percent: number;\r\n}\r\n\r\n/**\r\n * A loading indicator that shows status text along with the percentage.\r\n * @public\r\n */\r\nexport class LoadingStatus extends React.PureComponent<LoadingStatusProps> {\r\n public static defaultProps: Partial<LoadingStatusProps> = {\r\n message: \"\",\r\n percent: 0,\r\n };\r\n\r\n // sanity check to keep percentage between 0 & 100\r\n private inRange(percent: number): number {\r\n let value = Math.min(percent, 100);\r\n value = Math.max(value, 0);\r\n return value;\r\n }\r\n\r\n public override render() {\r\n const percent = `${this.inRange(this.props.percent)}%`;\r\n const containerClass = classnames(this.props.className, \"loading-status-container\");\r\n return (\r\n <div className={containerClass} style={this.props.style}>\r\n <span className=\"loading-status-message\">{this.props.message}</span>\r\n <span className=\"loading-status-percent\">{percent}</span>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LoadingStatus.js","sourceRoot":"","sources":["../../../../src/core-react/loading/LoadingStatus.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B;;;GAGG;AACH,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IAMxE,kDAAkD;IAC1C,OAAO,CAAC,OAAe;QAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACvD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;QACpF,OAAO,CACL,6BAAK,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACrD,8BAAM,SAAS,EAAC,wBAAwB,IAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAQ;YACpE,8BAAM,SAAS,EAAC,wBAAwB,IAAE,OAAO,CAAQ,CACrD,CACP,CAAC;IACJ,CAAC;;AArBa,0BAAY,GAAgC;IACxD,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,CAAC;CACX,CAAC;SAJS,aAAa","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 Loading\n */\n\nimport \"./LoadingStatus.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { CommonProps } from \"../utils/Props\";\n\n/** Properties for [[LoadingStatus]] component\n * @public\n */\nexport interface LoadingStatusProps extends CommonProps {\n /** Message (text) displayed */\n message: string;\n /** Percent displayed (as text) */\n percent: number;\n}\n\n/**\n * A loading indicator that shows status text along with the percentage.\n * @public\n */\nexport class LoadingStatus extends React.PureComponent<LoadingStatusProps> {\n public static defaultProps: Partial<LoadingStatusProps> = {\n message: \"\",\n percent: 0,\n };\n\n // sanity check to keep percentage between 0 & 100\n private inRange(percent: number): number {\n let value = Math.min(percent, 100);\n value = Math.max(value, 0);\n return value;\n }\n\n public override render() {\n const percent = `${this.inRange(this.props.percent)}%`;\n const containerClass = classnames(this.props.className, \"loading-status-container\");\n return (\n <div className={containerClass} style={this.props.style}>\n <span className=\"loading-status-message\">{this.props.message}</span>\n <span className=\"loading-status-percent\">{percent}</span>\n </div>\n );\n }\n}\n"]}
@@ -1,20 +1,20 @@
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
-
6
- .loading-status-container {
7
- display: flex;
8
- align-items: center;
9
- opacity: 0.90;
10
- font-size: 12px;
11
- }
12
-
13
- .loading-status-message {
14
- flex: 1;
15
- }
16
-
17
- .loading-status-percent {
18
- flex: initial;
19
- margin-right: auto;
20
- }
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
+
6
+ .loading-status-container {
7
+ display: flex;
8
+ align-items: center;
9
+ opacity: 0.90;
10
+ font-size: 12px;
11
+ }
12
+
13
+ .loading-status-message {
14
+ flex: 1;
15
+ }
16
+
17
+ .loading-status-percent {
18
+ flex: initial;
19
+ margin-right: auto;
20
+ }