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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  2. package/lib/cjs/components-react/_target.scss +9 -9
  3. package/lib/cjs/components-react/common/DateUtils.js.map +1 -1
  4. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  5. package/lib/cjs/components-react/common/HighlightedText.js.map +1 -1
  6. package/lib/cjs/components-react/common/HighlightingComponentProps.js.map +1 -1
  7. package/lib/cjs/components-react/common/IImageLoader.js.map +1 -1
  8. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  9. package/lib/cjs/components-react/common/Links.js.map +1 -1
  10. package/lib/cjs/components-react/common/PageOptions.js.map +1 -1
  11. package/lib/cjs/components-react/common/SubscriptionScheduler.js.map +1 -1
  12. package/lib/cjs/components-react/common/UseAsyncValue.js.map +1 -1
  13. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  14. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  15. package/lib/cjs/components-react/common/UseRerender.js.map +1 -1
  16. package/lib/cjs/components-react/common/countMatchesInString.js.map +1 -1
  17. package/lib/cjs/components-react/common/selection/SelectionHandler.js.map +1 -1
  18. package/lib/cjs/components-react/common/selection/SelectionModes.js.map +1 -1
  19. package/lib/cjs/components-react/converters/BooleanTypeConverter.js.map +1 -1
  20. package/lib/cjs/components-react/converters/CompositeTypeConverter.js.map +1 -1
  21. package/lib/cjs/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  22. package/lib/cjs/components-react/converters/EnumTypeConverter.js.map +1 -1
  23. package/lib/cjs/components-react/converters/HexadecimalTypeConverter.js.map +1 -1
  24. package/lib/cjs/components-react/converters/NavigationPropertyTypeConverter.js.map +1 -1
  25. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  26. package/lib/cjs/components-react/converters/PointTypeConverter.js.map +1 -1
  27. package/lib/cjs/components-react/converters/StringTypeConverter.js.map +1 -1
  28. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  29. package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
  30. package/lib/cjs/components-react/converters/valuetypes/ConvertedTypes.js.map +1 -1
  31. package/lib/cjs/components-react/datepicker/DateField.js.map +1 -1
  32. package/lib/cjs/components-react/datepicker/DateField.scss +22 -22
  33. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  34. package/lib/cjs/components-react/datepicker/DatePicker.scss +176 -176
  35. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  36. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.scss +57 -57
  37. package/lib/cjs/components-react/datepicker/IntlFormatter.js.map +1 -1
  38. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  39. package/lib/cjs/components-react/datepicker/TimeField.scss +76 -76
  40. package/lib/cjs/components-react/editors/BooleanEditor.js.map +1 -1
  41. package/lib/cjs/components-react/editors/BooleanEditor.scss +22 -22
  42. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  43. package/lib/cjs/components-react/editors/CustomNumberEditor.scss +20 -20
  44. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  45. package/lib/cjs/components-react/editors/DateTimeEditor.scss +9 -9
  46. package/lib/cjs/components-react/editors/EditorContainer.js.map +1 -1
  47. package/lib/cjs/components-react/editors/EditorContainer.scss +6 -6
  48. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  49. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.scss +141 -141
  50. package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
  51. package/lib/cjs/components-react/editors/EnumEditor.scss +22 -22
  52. package/lib/cjs/components-react/editors/IconEditor.js.map +1 -1
  53. package/lib/cjs/components-react/editors/IconEditor.scss +16 -16
  54. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  55. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.scss +24 -24
  56. package/lib/cjs/components-react/editors/NumericInputEditor.js.map +1 -1
  57. package/lib/cjs/components-react/editors/NumericInputEditor.scss +16 -16
  58. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  59. package/lib/cjs/components-react/editors/PopupButton.scss +116 -116
  60. package/lib/cjs/components-react/editors/PropertyEditorManager.js.map +1 -1
  61. package/lib/cjs/components-react/editors/SliderEditor.js.map +1 -1
  62. package/lib/cjs/components-react/editors/SliderEditor.scss +13 -13
  63. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  64. package/lib/cjs/components-react/editors/TextEditor.scss +20 -20
  65. package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
  66. package/lib/cjs/components-react/editors/TextareaEditor.scss +14 -14
  67. package/lib/cjs/components-react/editors/ToggleEditor.js.map +1 -1
  68. package/lib/cjs/components-react/editors/ToggleEditor.scss +23 -23
  69. package/lib/cjs/components-react/editors/variables.scss +7 -7
  70. package/lib/cjs/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
  71. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  72. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  73. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +38 -38
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +68 -68
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  79. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  80. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  81. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  82. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  83. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  84. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  85. package/lib/cjs/components-react/filtering/FilteringInput.scss +58 -58
  86. package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
  87. package/lib/cjs/components-react/filtering/ResultSelector.scss +68 -68
  88. package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
  89. package/lib/cjs/components-react/iconpicker/IconPickerButton.scss +75 -75
  90. package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
  91. package/lib/cjs/components-react/inputs/ParsedInput.scss +23 -23
  92. package/lib/cjs/components-react/properties/ItemStyle.js.map +1 -1
  93. package/lib/cjs/components-react/properties/LinkHandler.js.map +1 -1
  94. package/lib/cjs/components-react/properties/ValueRendererManager.js.map +1 -1
  95. package/lib/cjs/components-react/properties/renderers/ActionButtonList.js.map +1 -1
  96. package/lib/cjs/components-react/properties/renderers/ActionButtonList.scss +25 -25
  97. package/lib/cjs/components-react/properties/renderers/ActionButtonRenderer.js.map +1 -1
  98. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  99. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  100. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -17
  101. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  102. package/lib/cjs/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  103. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  104. package/lib/cjs/components-react/properties/renderers/PropertyView.js.map +1 -1
  105. package/lib/cjs/components-react/properties/renderers/PropertyView.scss +106 -106
  106. package/lib/cjs/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.js.map +1 -1
  107. package/lib/cjs/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.js.map +1 -1
  108. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  109. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +88 -88
  110. package/lib/cjs/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
  111. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  112. package/lib/cjs/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  113. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  114. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  115. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  116. package/lib/cjs/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
  117. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  118. package/lib/cjs/components-react/properties/renderers/value/WithContextStyle.js.map +1 -1
  119. package/lib/cjs/components-react/properties/renderers/value/table/ArrayValueRenderer.js.map +1 -1
  120. package/lib/cjs/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.js.map +1 -1
  121. package/lib/cjs/components-react/properties/renderers/value/table/StructValueRenderer.js.map +1 -1
  122. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  123. package/lib/cjs/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
  124. package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  125. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  126. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
  127. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  128. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.scss +73 -73
  129. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  130. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  131. package/lib/cjs/components-react/propertygrid/component/PropertyList.js.map +1 -1
  132. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  133. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +101 -101
  134. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  135. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  136. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  137. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  138. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
  139. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
  140. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
  141. package/lib/cjs/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
  142. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  143. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
  144. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
  145. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  146. package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  147. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
  148. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
  149. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
  150. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  151. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  152. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  153. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  154. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  155. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  156. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  157. package/lib/cjs/components-react/selectable-content/SelectableContent.scss +20 -20
  158. package/lib/cjs/components-react/toolbar/Item.js.map +1 -1
  159. package/lib/cjs/components-react/toolbar/Item.scss +91 -91
  160. package/lib/cjs/components-react/toolbar/ItemWrapper.js.map +1 -1
  161. package/lib/cjs/components-react/toolbar/ItemWrapper.scss +10 -10
  162. package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
  163. package/lib/cjs/components-react/toolbar/Items.scss +96 -96
  164. package/lib/cjs/components-react/toolbar/Overflow.js.map +1 -1
  165. package/lib/cjs/components-react/toolbar/Overflow.scss +57 -57
  166. package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
  167. package/lib/cjs/components-react/toolbar/OverflowPanel.scss +37 -37
  168. package/lib/cjs/components-react/toolbar/PopupItem.js.map +1 -1
  169. package/lib/cjs/components-react/toolbar/PopupItem.scss +88 -88
  170. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  171. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  172. package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
  173. package/lib/cjs/components-react/toolbar/Toolbar.scss +18 -18
  174. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  175. package/lib/cjs/components-react/toolbar/_variables.scss +34 -34
  176. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  177. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.scss +44 -44
  178. package/lib/cjs/components-react/toolbar/groupPanel/Column.js.map +1 -1
  179. package/lib/cjs/components-react/toolbar/groupPanel/Column.scss +9 -9
  180. package/lib/cjs/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  181. package/lib/cjs/components-react/toolbar/groupPanel/Columns.scss +10 -10
  182. package/lib/cjs/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  183. package/lib/cjs/components-react/toolbar/groupPanel/Panel.scss +15 -15
  184. package/lib/cjs/components-react/toolbar/groupPanel/Title.js.map +1 -1
  185. package/lib/cjs/components-react/toolbar/groupPanel/Title.scss +33 -33
  186. package/lib/cjs/components-react/toolbar/groupPanel/_variables.scss +16 -16
  187. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  188. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.scss +29 -29
  189. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  190. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.scss +117 -117
  191. package/lib/cjs/components-react/toolbar/groupPanel/tool/_variables.scss +12 -12
  192. package/lib/cjs/components-react/toolbar/useDragInteraction.js.map +1 -1
  193. package/lib/cjs/components-react/toolbar/utilities/Direction.js.map +1 -1
  194. package/lib/cjs/components-react/tree/HighlightingEngine.js.map +1 -1
  195. package/lib/cjs/components-react/tree/HighlightingEngine.scss +7 -7
  196. package/lib/cjs/components-react/tree/ImageLoader.js.map +1 -1
  197. package/lib/cjs/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
  198. package/lib/cjs/components-react/tree/TreeComponentTestId.js.map +1 -1
  199. package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
  200. package/lib/cjs/components-react/tree/controlled/Observable.js.map +1 -1
  201. package/lib/cjs/components-react/tree/controlled/TreeActions.js.map +1 -1
  202. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  203. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  204. package/lib/cjs/components-react/tree/controlled/TreeEvents.js.map +1 -1
  205. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  206. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  207. package/lib/cjs/components-react/tree/controlled/TreeModelSource.js.map +1 -1
  208. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  209. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  210. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.scss +102 -102
  211. package/lib/cjs/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  212. package/lib/cjs/components-react/tree/controlled/component/NodeContent.scss +27 -27
  213. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
  214. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  215. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  216. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  217. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  218. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  219. package/lib/cjs/components-react.js.map +1 -1
  220. package/lib/esm/components-react/UiComponents.js.map +1 -1
  221. package/lib/esm/components-react/_target.scss +9 -9
  222. package/lib/esm/components-react/common/DateUtils.js.map +1 -1
  223. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  224. package/lib/esm/components-react/common/HighlightedText.js.map +1 -1
  225. package/lib/esm/components-react/common/HighlightingComponentProps.js.map +1 -1
  226. package/lib/esm/components-react/common/IImageLoader.js.map +1 -1
  227. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  228. package/lib/esm/components-react/common/Links.js.map +1 -1
  229. package/lib/esm/components-react/common/PageOptions.js.map +1 -1
  230. package/lib/esm/components-react/common/SubscriptionScheduler.js.map +1 -1
  231. package/lib/esm/components-react/common/UseAsyncValue.js.map +1 -1
  232. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  233. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  234. package/lib/esm/components-react/common/UseRerender.js.map +1 -1
  235. package/lib/esm/components-react/common/countMatchesInString.js.map +1 -1
  236. package/lib/esm/components-react/common/selection/SelectionHandler.js.map +1 -1
  237. package/lib/esm/components-react/common/selection/SelectionModes.js.map +1 -1
  238. package/lib/esm/components-react/converters/BooleanTypeConverter.js.map +1 -1
  239. package/lib/esm/components-react/converters/CompositeTypeConverter.js.map +1 -1
  240. package/lib/esm/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  241. package/lib/esm/components-react/converters/EnumTypeConverter.js.map +1 -1
  242. package/lib/esm/components-react/converters/HexadecimalTypeConverter.js.map +1 -1
  243. package/lib/esm/components-react/converters/NavigationPropertyTypeConverter.js.map +1 -1
  244. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  245. package/lib/esm/components-react/converters/PointTypeConverter.js.map +1 -1
  246. package/lib/esm/components-react/converters/StringTypeConverter.js.map +1 -1
  247. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  248. package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
  249. package/lib/esm/components-react/converters/valuetypes/ConvertedTypes.js.map +1 -1
  250. package/lib/esm/components-react/datepicker/DateField.js.map +1 -1
  251. package/lib/esm/components-react/datepicker/DateField.scss +22 -22
  252. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  253. package/lib/esm/components-react/datepicker/DatePicker.scss +176 -176
  254. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  255. package/lib/esm/components-react/datepicker/DatePickerPopupButton.scss +57 -57
  256. package/lib/esm/components-react/datepicker/IntlFormatter.js.map +1 -1
  257. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  258. package/lib/esm/components-react/datepicker/TimeField.scss +76 -76
  259. package/lib/esm/components-react/editors/BooleanEditor.js.map +1 -1
  260. package/lib/esm/components-react/editors/BooleanEditor.scss +22 -22
  261. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  262. package/lib/esm/components-react/editors/CustomNumberEditor.scss +20 -20
  263. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  264. package/lib/esm/components-react/editors/DateTimeEditor.scss +9 -9
  265. package/lib/esm/components-react/editors/EditorContainer.js.map +1 -1
  266. package/lib/esm/components-react/editors/EditorContainer.scss +6 -6
  267. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  268. package/lib/esm/components-react/editors/EnumButtonGroupEditor.scss +141 -141
  269. package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
  270. package/lib/esm/components-react/editors/EnumEditor.scss +22 -22
  271. package/lib/esm/components-react/editors/IconEditor.js.map +1 -1
  272. package/lib/esm/components-react/editors/IconEditor.scss +16 -16
  273. package/lib/esm/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  274. package/lib/esm/components-react/editors/ImageCheckBoxEditor.scss +24 -24
  275. package/lib/esm/components-react/editors/NumericInputEditor.js.map +1 -1
  276. package/lib/esm/components-react/editors/NumericInputEditor.scss +16 -16
  277. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  278. package/lib/esm/components-react/editors/PopupButton.scss +116 -116
  279. package/lib/esm/components-react/editors/PropertyEditorManager.js.map +1 -1
  280. package/lib/esm/components-react/editors/SliderEditor.js.map +1 -1
  281. package/lib/esm/components-react/editors/SliderEditor.scss +13 -13
  282. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  283. package/lib/esm/components-react/editors/TextEditor.scss +20 -20
  284. package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
  285. package/lib/esm/components-react/editors/TextareaEditor.scss +14 -14
  286. package/lib/esm/components-react/editors/ToggleEditor.js.map +1 -1
  287. package/lib/esm/components-react/editors/ToggleEditor.scss +23 -23
  288. package/lib/esm/components-react/editors/variables.scss +7 -7
  289. package/lib/esm/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
  290. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  291. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  292. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  293. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  294. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +38 -38
  295. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  296. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +68 -68
  297. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  298. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  299. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  300. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  301. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  302. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  303. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  304. package/lib/esm/components-react/filtering/FilteringInput.scss +58 -58
  305. package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
  306. package/lib/esm/components-react/filtering/ResultSelector.scss +68 -68
  307. package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
  308. package/lib/esm/components-react/iconpicker/IconPickerButton.scss +75 -75
  309. package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
  310. package/lib/esm/components-react/inputs/ParsedInput.scss +23 -23
  311. package/lib/esm/components-react/properties/ItemStyle.js.map +1 -1
  312. package/lib/esm/components-react/properties/LinkHandler.js.map +1 -1
  313. package/lib/esm/components-react/properties/ValueRendererManager.js.map +1 -1
  314. package/lib/esm/components-react/properties/renderers/ActionButtonList.js.map +1 -1
  315. package/lib/esm/components-react/properties/renderers/ActionButtonList.scss +25 -25
  316. package/lib/esm/components-react/properties/renderers/ActionButtonRenderer.js.map +1 -1
  317. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  318. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  319. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -17
  320. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  321. package/lib/esm/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  322. package/lib/esm/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  323. package/lib/esm/components-react/properties/renderers/PropertyView.js.map +1 -1
  324. package/lib/esm/components-react/properties/renderers/PropertyView.scss +106 -106
  325. package/lib/esm/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.js.map +1 -1
  326. package/lib/esm/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.js.map +1 -1
  327. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  328. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +88 -88
  329. package/lib/esm/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
  330. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  331. package/lib/esm/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  332. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  333. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  334. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  335. package/lib/esm/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
  336. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  337. package/lib/esm/components-react/properties/renderers/value/WithContextStyle.js.map +1 -1
  338. package/lib/esm/components-react/properties/renderers/value/table/ArrayValueRenderer.js.map +1 -1
  339. package/lib/esm/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.js.map +1 -1
  340. package/lib/esm/components-react/properties/renderers/value/table/StructValueRenderer.js.map +1 -1
  341. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  342. package/lib/esm/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
  343. package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  344. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  345. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
  346. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  347. package/lib/esm/components-react/propertygrid/component/PropertyGrid.scss +73 -73
  348. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  349. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  350. package/lib/esm/components-react/propertygrid/component/PropertyList.js.map +1 -1
  351. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  352. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +101 -101
  353. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  354. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  355. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  356. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  357. package/lib/esm/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
  358. package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
  359. package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
  360. package/lib/esm/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
  361. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  362. package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
  363. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
  364. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  365. package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  366. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
  367. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
  368. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
  369. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  370. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  371. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  372. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  373. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  374. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  375. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  376. package/lib/esm/components-react/selectable-content/SelectableContent.scss +20 -20
  377. package/lib/esm/components-react/toolbar/Item.js.map +1 -1
  378. package/lib/esm/components-react/toolbar/Item.scss +91 -91
  379. package/lib/esm/components-react/toolbar/ItemWrapper.js.map +1 -1
  380. package/lib/esm/components-react/toolbar/ItemWrapper.scss +10 -10
  381. package/lib/esm/components-react/toolbar/Items.js.map +1 -1
  382. package/lib/esm/components-react/toolbar/Items.scss +96 -96
  383. package/lib/esm/components-react/toolbar/Overflow.js.map +1 -1
  384. package/lib/esm/components-react/toolbar/Overflow.scss +57 -57
  385. package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
  386. package/lib/esm/components-react/toolbar/OverflowPanel.scss +37 -37
  387. package/lib/esm/components-react/toolbar/PopupItem.js.map +1 -1
  388. package/lib/esm/components-react/toolbar/PopupItem.scss +88 -88
  389. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  390. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  391. package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
  392. package/lib/esm/components-react/toolbar/Toolbar.scss +18 -18
  393. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  394. package/lib/esm/components-react/toolbar/_variables.scss +34 -34
  395. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  396. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.scss +44 -44
  397. package/lib/esm/components-react/toolbar/groupPanel/Column.js.map +1 -1
  398. package/lib/esm/components-react/toolbar/groupPanel/Column.scss +9 -9
  399. package/lib/esm/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  400. package/lib/esm/components-react/toolbar/groupPanel/Columns.scss +10 -10
  401. package/lib/esm/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  402. package/lib/esm/components-react/toolbar/groupPanel/Panel.scss +15 -15
  403. package/lib/esm/components-react/toolbar/groupPanel/Title.js.map +1 -1
  404. package/lib/esm/components-react/toolbar/groupPanel/Title.scss +33 -33
  405. package/lib/esm/components-react/toolbar/groupPanel/_variables.scss +16 -16
  406. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  407. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.scss +29 -29
  408. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  409. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.scss +117 -117
  410. package/lib/esm/components-react/toolbar/groupPanel/tool/_variables.scss +12 -12
  411. package/lib/esm/components-react/toolbar/useDragInteraction.js.map +1 -1
  412. package/lib/esm/components-react/toolbar/utilities/Direction.js.map +1 -1
  413. package/lib/esm/components-react/tree/HighlightingEngine.js.map +1 -1
  414. package/lib/esm/components-react/tree/HighlightingEngine.scss +7 -7
  415. package/lib/esm/components-react/tree/ImageLoader.js.map +1 -1
  416. package/lib/esm/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
  417. package/lib/esm/components-react/tree/TreeComponentTestId.js.map +1 -1
  418. package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
  419. package/lib/esm/components-react/tree/controlled/Observable.js.map +1 -1
  420. package/lib/esm/components-react/tree/controlled/TreeActions.js.map +1 -1
  421. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  422. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  423. package/lib/esm/components-react/tree/controlled/TreeEvents.js.map +1 -1
  424. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  425. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  426. package/lib/esm/components-react/tree/controlled/TreeModelSource.js.map +1 -1
  427. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  428. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  429. package/lib/esm/components-react/tree/controlled/component/ControlledTree.scss +102 -102
  430. package/lib/esm/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  431. package/lib/esm/components-react/tree/controlled/component/NodeContent.scss +27 -27
  432. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
  433. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  434. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  435. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  436. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  437. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  438. package/lib/esm/components-react.js.map +1 -1
  439. package/lib/public/locales/en/UiComponents.json +139 -139
  440. package/package.json +3 -3
@@ -1,37 +1,37 @@
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 "variables";
6
-
7
- .components-toolbar-overflow-panel {
8
- background: $buic-background-1;
9
- border-radius: var(--iui-border-radius-1);
10
- display: flex;
11
- height: unset;
12
- width: fit-content;
13
- padding: unset;
14
-
15
- &.components-vertical-components-direction-bottom {
16
- right: -$components-items-border-width;
17
- flex-direction: column;
18
- top: 100%;
19
- }
20
-
21
- &.components-vertical-components-direction-top {
22
- right: -$components-items-border-width;
23
- flex-direction: column;
24
- bottom: 100%;
25
- }
26
-
27
- &.components-horizontal-components-direction-right {
28
- left: 100%;
29
- bottom: -$components-items-border-width;
30
- flex-direction: row;
31
- }
32
- &.components-horizontal-components-direction-left {
33
- right: 100%;
34
- bottom: -$components-items-border-width;
35
- flex-direction: row;
36
- }
37
- }
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 "variables";
6
+
7
+ .components-toolbar-overflow-panel {
8
+ background: $buic-background-1;
9
+ border-radius: var(--iui-border-radius-1);
10
+ display: flex;
11
+ height: unset;
12
+ width: fit-content;
13
+ padding: unset;
14
+
15
+ &.components-vertical-components-direction-bottom {
16
+ right: -$components-items-border-width;
17
+ flex-direction: column;
18
+ top: 100%;
19
+ }
20
+
21
+ &.components-vertical-components-direction-top {
22
+ right: -$components-items-border-width;
23
+ flex-direction: column;
24
+ bottom: 100%;
25
+ }
26
+
27
+ &.components-horizontal-components-direction-right {
28
+ left: 100%;
29
+ bottom: -$components-items-border-width;
30
+ flex-direction: row;
31
+ }
32
+ &.components-horizontal-components-direction-left {
33
+ right: 100%;
34
+ bottom: -$components-items-border-width;
35
+ flex-direction: row;
36
+ }
37
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"PopupItem.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Toolbar\r\n */\r\n\r\nimport \"./PopupItem.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ActionButton, RelativePosition } from \"@itwin/appui-abstract\";\r\nimport { Popup, useRefState } from \"@itwin/core-react\";\r\nimport { ToolbarButtonItemProps } from \"./Item\";\r\nimport { useToolbarPopupAutoHideContext, useToolbarWithOverflowDirectionContext, useToolItemEntryContext } from \"./ToolbarWithOverflow\";\r\nimport { toToolbarPopupRelativePosition } from \"./PopupItemWithDrag\";\r\n\r\n/** @public */\r\nexport interface ToolbarPopupContextProps {\r\n readonly closePanel: () => void;\r\n readonly setSelectedItem?: (buttonItem: ActionButton) => void;\r\n}\r\n\r\n/**\r\n * Context used by Toolbar items in popups to close the popup panel.\r\n * @public\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const ToolbarPopupContext = React.createContext<ToolbarPopupContextProps>({\r\n /** function used to close popup panel */\r\n closePanel: /* istanbul ignore next */ () => { },\r\n /** if popup panel is a GroupButton then this is call to set the selected action item within the panel */\r\n setSelectedItem: /* istanbul ignore next */ (_buttonItem: ActionButton) => { },\r\n});\r\n\r\n/**\r\n * React hook used to retrieve the ToolbarPopupContext.\r\n * @public\r\n */\r\nexport function useToolbarPopupContext() {\r\n return React.useContext(ToolbarPopupContext);\r\n}\r\n\r\n/** Properties of [[PopupItem]] component.\r\n * @public\r\n */\r\nexport interface PopupItemProps extends ToolbarButtonItemProps {\r\n /** Describes if expandable item triangle indicator should be hidden. */\r\n hideIndicator?: boolean;\r\n /** Panel of the toolbar. */\r\n panel?: React.ReactNode;\r\n /** If true the popup panel is mounted once and unmounted when button is unmounted. If false the\r\n * content node is unmounted each time the popup is closed. */\r\n keepContentsMounted?: boolean;\r\n}\r\n\r\n/** Popup toolbar item that displays a panel\r\n * @public\r\n */\r\nexport function PopupItem(props: PopupItemProps) {\r\n const [isPanelShown, setPanelShown] = React.useState(false);\r\n const { expandsTo, overflowExpandsTo, panelAlignment, onPopupPanelOpenClose } = useToolbarWithOverflowDirectionContext();\r\n const processPanelOpenClose = React.useCallback((isOpening: boolean) => {\r\n setPanelShown((prev) => {\r\n // istanbul ignore else\r\n if (prev !== isOpening)\r\n onPopupPanelOpenClose(isOpening);\r\n return isOpening;\r\n });\r\n }, [setPanelShown, onPopupPanelOpenClose]);\r\n\r\n // handle open and closing overflow panel\r\n const onButtonClick = React.useCallback(() => {\r\n processPanelOpenClose(!isPanelShown);\r\n // istanbul ignore next\r\n if (props.onClick)\r\n props.onClick();\r\n }, [props, isPanelShown, processPanelOpenClose]);\r\n const className = classnames(\r\n \"components-toolbar-button-item\",\r\n \"components-toolbar-expandable-button\",\r\n props.isDisabled && \"components-disabled\",\r\n props.className);\r\n\r\n const [targetRef, target] = useRefState<HTMLButtonElement>();\r\n // istanbul ignore next\r\n const handleClose = React.useCallback(() => {\r\n processPanelOpenClose(false);\r\n }, [processPanelOpenClose]);\r\n const { hasOverflow } = useToolItemEntryContext();\r\n const expandsToDirection = hasOverflow ? overflowExpandsTo : expandsTo;\r\n\r\n const { hideIndicator, panel } = props;\r\n return (\r\n <ToolbarPopupContext.Provider value={{\r\n closePanel: () => processPanelOpenClose(false),\r\n }}>\r\n <button\r\n data-item-id={props.itemId}\r\n data-item-type=\"tool-button-popup\"\r\n data-item-group-priority={props.groupPriority}\r\n data-item-priority={props.itemPriority}\r\n data-item-provider-id={props.providerId}\r\n ref={targetRef}\r\n disabled={props.isDisabled} // this is needed to prevent focusing/keyboard access to disabled buttons\r\n onClick={onButtonClick}\r\n onKeyDown={props.onKeyDown}\r\n className={className}\r\n style={props.style}\r\n title={props.title}\r\n >\r\n <div className=\"components-icon\">\r\n {props.icon}\r\n </div>\r\n {props.badge &&\r\n <div className=\"components-badge\">\r\n {props.badge}\r\n </div>\r\n }\r\n {hideIndicator ? /* istanbul ignore next */ undefined : <div className=\"components-triangle\" />}\r\n </button>\r\n <PopupItemPopup\r\n isOpen={isPanelShown}\r\n onClose={handleClose}\r\n position={toToolbarPopupRelativePosition(expandsToDirection, panelAlignment)}\r\n target={target}\r\n keepContentsMounted={props.keepContentsMounted}\r\n >\r\n {panel}\r\n </PopupItemPopup>\r\n </ToolbarPopupContext.Provider>\r\n );\r\n}\r\n\r\n/** @internal */\r\ninterface PopupItemPopupProps {\r\n children?: React.ReactNode;\r\n isOpen?: boolean;\r\n onClose(): void;\r\n position: RelativePosition;\r\n target?: HTMLElement;\r\n keepContentsMounted?: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport function PopupItemPopup(props: PopupItemPopupProps) {\r\n const isHidden = useToolbarPopupAutoHideContext();\r\n const className = classnames(\r\n \"components-toolbar-popupItem_popupItemPopup\",\r\n isHidden && \"nz-hidden\");\r\n\r\n return <Popup\r\n className={className}\r\n offset={0}\r\n showShadow={false}\r\n {...props}\r\n />;\r\n}\r\n"]}
1
+ {"version":3,"file":"PopupItem.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./PopupItem.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { ActionButton, RelativePosition } from \"@itwin/appui-abstract\";\nimport { Popup, useRefState } from \"@itwin/core-react\";\nimport { ToolbarButtonItemProps } from \"./Item\";\nimport { useToolbarPopupAutoHideContext, useToolbarWithOverflowDirectionContext, useToolItemEntryContext } from \"./ToolbarWithOverflow\";\nimport { toToolbarPopupRelativePosition } from \"./PopupItemWithDrag\";\n\n/** @public */\nexport interface ToolbarPopupContextProps {\n readonly closePanel: () => void;\n readonly setSelectedItem?: (buttonItem: ActionButton) => void;\n}\n\n/**\n * Context used by Toolbar items in popups to close the popup panel.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ToolbarPopupContext = React.createContext<ToolbarPopupContextProps>({\n /** function used to close popup panel */\n closePanel: /* istanbul ignore next */ () => { },\n /** if popup panel is a GroupButton then this is call to set the selected action item within the panel */\n setSelectedItem: /* istanbul ignore next */ (_buttonItem: ActionButton) => { },\n});\n\n/**\n * React hook used to retrieve the ToolbarPopupContext.\n * @public\n */\nexport function useToolbarPopupContext() {\n return React.useContext(ToolbarPopupContext);\n}\n\n/** Properties of [[PopupItem]] component.\n * @public\n */\nexport interface PopupItemProps extends ToolbarButtonItemProps {\n /** Describes if expandable item triangle indicator should be hidden. */\n hideIndicator?: boolean;\n /** Panel of the toolbar. */\n panel?: React.ReactNode;\n /** If true the popup panel is mounted once and unmounted when button is unmounted. If false the\n * content node is unmounted each time the popup is closed. */\n keepContentsMounted?: boolean;\n}\n\n/** Popup toolbar item that displays a panel\n * @public\n */\nexport function PopupItem(props: PopupItemProps) {\n const [isPanelShown, setPanelShown] = React.useState(false);\n const { expandsTo, overflowExpandsTo, panelAlignment, onPopupPanelOpenClose } = useToolbarWithOverflowDirectionContext();\n const processPanelOpenClose = React.useCallback((isOpening: boolean) => {\n setPanelShown((prev) => {\n // istanbul ignore else\n if (prev !== isOpening)\n onPopupPanelOpenClose(isOpening);\n return isOpening;\n });\n }, [setPanelShown, onPopupPanelOpenClose]);\n\n // handle open and closing overflow panel\n const onButtonClick = React.useCallback(() => {\n processPanelOpenClose(!isPanelShown);\n // istanbul ignore next\n if (props.onClick)\n props.onClick();\n }, [props, isPanelShown, processPanelOpenClose]);\n const className = classnames(\n \"components-toolbar-button-item\",\n \"components-toolbar-expandable-button\",\n props.isDisabled && \"components-disabled\",\n props.className);\n\n const [targetRef, target] = useRefState<HTMLButtonElement>();\n // istanbul ignore next\n const handleClose = React.useCallback(() => {\n processPanelOpenClose(false);\n }, [processPanelOpenClose]);\n const { hasOverflow } = useToolItemEntryContext();\n const expandsToDirection = hasOverflow ? overflowExpandsTo : expandsTo;\n\n const { hideIndicator, panel } = props;\n return (\n <ToolbarPopupContext.Provider value={{\n closePanel: () => processPanelOpenClose(false),\n }}>\n <button\n data-item-id={props.itemId}\n data-item-type=\"tool-button-popup\"\n data-item-group-priority={props.groupPriority}\n data-item-priority={props.itemPriority}\n data-item-provider-id={props.providerId}\n ref={targetRef}\n disabled={props.isDisabled} // this is needed to prevent focusing/keyboard access to disabled buttons\n onClick={onButtonClick}\n onKeyDown={props.onKeyDown}\n className={className}\n style={props.style}\n title={props.title}\n >\n <div className=\"components-icon\">\n {props.icon}\n </div>\n {props.badge &&\n <div className=\"components-badge\">\n {props.badge}\n </div>\n }\n {hideIndicator ? /* istanbul ignore next */ undefined : <div className=\"components-triangle\" />}\n </button>\n <PopupItemPopup\n isOpen={isPanelShown}\n onClose={handleClose}\n position={toToolbarPopupRelativePosition(expandsToDirection, panelAlignment)}\n target={target}\n keepContentsMounted={props.keepContentsMounted}\n >\n {panel}\n </PopupItemPopup>\n </ToolbarPopupContext.Provider>\n );\n}\n\n/** @internal */\ninterface PopupItemPopupProps {\n children?: React.ReactNode;\n isOpen?: boolean;\n onClose(): void;\n position: RelativePosition;\n target?: HTMLElement;\n keepContentsMounted?: boolean;\n}\n\n/** @internal */\nexport function PopupItemPopup(props: PopupItemPopupProps) {\n const isHidden = useToolbarPopupAutoHideContext();\n const className = classnames(\n \"components-toolbar-popupItem_popupItemPopup\",\n isHidden && \"nz-hidden\");\n\n return <Popup\n className={className}\n offset={0}\n showShadow={false}\n {...props}\n />;\n}\n"]}
@@ -1,88 +1,88 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
- @import "~@itwin/core-react/lib/cjs/core-react/geometry";
7
- @import "variables";
8
-
9
- .components-toolbar-expandable-button {
10
- $triangle-width: 4px;
11
- $triangle-height: $triangle-width;
12
- $shadow-vertical-offset: 1px;
13
- $margin-from-triangle-to-stroke: 3px;
14
- $arrow-shadow: $icon-shadow;
15
- position: relative;
16
-
17
- > * {
18
- &:not(.components-triangle) {
19
- height: 100%;
20
- width: 100%;
21
- }
22
- }
23
-
24
- > .components-triangle {
25
- border-radius: 0;
26
- position: absolute;
27
- right: $margin-from-triangle-to-stroke;
28
- bottom: $margin-from-triangle-to-stroke;
29
- filter: $arrow-shadow;
30
- pointer-events: none;
31
-
32
- @include triangle-bottom-right(
33
- $width: $triangle-width,
34
- $height: $triangle-height,
35
- $color: $buic-icon-color
36
- );
37
- }
38
-
39
- &:active > .components-triangle {
40
- filter: $no-shadow;
41
-
42
- @include triangle-bottom-right-color($pressed-icon-color);
43
- }
44
-
45
- &.components-active {
46
- &:not(:active):not(.components-disabled) {
47
- > .components-triangle {
48
- filter: $no-shadow;
49
-
50
- @include triangle-bottom-right-color($active-icon-color);
51
- }
52
- }
53
- }
54
-
55
- &.components-disabled {
56
- > .components-triangle {
57
- @include triangle-bottom-right-color($disabled-icon-color);
58
- }
59
- }
60
-
61
- &.components-disabled-drag {
62
- > .components-icon {
63
- color: $disabled-icon-color;
64
- }
65
-
66
- > .components-triangle {
67
- @include triangle-bottom-right-color($disabled-icon-color);
68
- }
69
- }
70
- }
71
-
72
- .components-toolbar-popupItem_popupItemPopup {
73
- @include uicore-z-index(toolbar-panels);
74
- width: fit-content;
75
- background: $buic-background-1;
76
- border-color: $buic-background-5;
77
- border-width: 1px;
78
- border-style: solid;
79
- border-radius: var(--iui-border-radius-1);
80
-
81
- transition: visibility var(--iui-duration-2) ease,
82
- opacity var(--iui-duration-2) ease;
83
-
84
- &.nz-hidden {
85
- opacity: 0;
86
- visibility: hidden;
87
- }
88
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/geometry";
7
+ @import "variables";
8
+
9
+ .components-toolbar-expandable-button {
10
+ $triangle-width: 4px;
11
+ $triangle-height: $triangle-width;
12
+ $shadow-vertical-offset: 1px;
13
+ $margin-from-triangle-to-stroke: 3px;
14
+ $arrow-shadow: $icon-shadow;
15
+ position: relative;
16
+
17
+ > * {
18
+ &:not(.components-triangle) {
19
+ height: 100%;
20
+ width: 100%;
21
+ }
22
+ }
23
+
24
+ > .components-triangle {
25
+ border-radius: 0;
26
+ position: absolute;
27
+ right: $margin-from-triangle-to-stroke;
28
+ bottom: $margin-from-triangle-to-stroke;
29
+ filter: $arrow-shadow;
30
+ pointer-events: none;
31
+
32
+ @include triangle-bottom-right(
33
+ $width: $triangle-width,
34
+ $height: $triangle-height,
35
+ $color: $buic-icon-color
36
+ );
37
+ }
38
+
39
+ &:active > .components-triangle {
40
+ filter: $no-shadow;
41
+
42
+ @include triangle-bottom-right-color($pressed-icon-color);
43
+ }
44
+
45
+ &.components-active {
46
+ &:not(:active):not(.components-disabled) {
47
+ > .components-triangle {
48
+ filter: $no-shadow;
49
+
50
+ @include triangle-bottom-right-color($active-icon-color);
51
+ }
52
+ }
53
+ }
54
+
55
+ &.components-disabled {
56
+ > .components-triangle {
57
+ @include triangle-bottom-right-color($disabled-icon-color);
58
+ }
59
+ }
60
+
61
+ &.components-disabled-drag {
62
+ > .components-icon {
63
+ color: $disabled-icon-color;
64
+ }
65
+
66
+ > .components-triangle {
67
+ @include triangle-bottom-right-color($disabled-icon-color);
68
+ }
69
+ }
70
+ }
71
+
72
+ .components-toolbar-popupItem_popupItemPopup {
73
+ @include uicore-z-index(toolbar-panels);
74
+ width: fit-content;
75
+ background: $buic-background-1;
76
+ border-color: $buic-background-5;
77
+ border-width: 1px;
78
+ border-style: solid;
79
+ border-radius: var(--iui-border-radius-1);
80
+
81
+ transition: visibility var(--iui-duration-2) ease,
82
+ opacity var(--iui-duration-2) ease;
83
+
84
+ &.nz-hidden {
85
+ opacity: 0;
86
+ visibility: hidden;
87
+ }
88
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"PopupItemWithDrag.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemWithDrag.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Toolbar\r\n */\r\n\r\nimport \"./PopupItem.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ActionButton, ConditionalBooleanValue, ConditionalStringValue, GroupButton, RelativePosition, ToolbarItemUtilities } from \"@itwin/appui-abstract\";\r\nimport { BadgeUtilities, IconHelper, useRefState } from \"@itwin/core-react\";\r\nimport { ToolbarButtonItemProps } from \"./Item\";\r\nimport { PopupItemPopup, ToolbarPopupContext } from \"./PopupItem\";\r\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\r\nimport { ToolbarPanelAlignment, useToolbarWithOverflowDirectionContext, useToolItemEntryContext } from \"./ToolbarWithOverflow\";\r\nimport { useDragInteraction } from \"./useDragInteraction\";\r\nimport { Direction } from \"./utilities/Direction\";\r\n\r\n/** Properties of [[PopupItem]] component.\r\n * @public\r\n */\r\nexport interface PopupItemWithDragProps extends ToolbarButtonItemProps {\r\n /** Panel of the toolbar. */\r\n groupItem: GroupButton;\r\n}\r\n\r\nfunction tryFindActiveAction(item: GroupButton): ActionButton | undefined {\r\n for (const childItem of item.items) {\r\n // istanbul ignore else\r\n if (ToolbarItemUtilities.isActionButton(childItem)) {\r\n if (childItem.isActive)\r\n return childItem;\r\n } else if (ToolbarItemUtilities.isGroupButton(childItem)) {\r\n const nestedChild = tryFindActiveAction(childItem);\r\n if (nestedChild)\r\n return nestedChild;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getFirstAvailableChildActionItem(item: GroupButton): ActionButton | undefined {\r\n for (const childItem of item.items) {\r\n if (ToolbarItemUtilities.isActionButton(childItem)) {\r\n return childItem;\r\n } else {\r\n // istanbul ignore else\r\n if (ToolbarItemUtilities.isGroupButton(childItem)) {\r\n const nestedChild = getFirstAvailableChildActionItem(childItem);\r\n // istanbul ignore else\r\n if (nestedChild)\r\n return nestedChild;\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getActiveAction(item: GroupButton): ActionButton | undefined {\r\n const activeItem = tryFindActiveAction(item);\r\n if (activeItem)\r\n return activeItem;\r\n\r\n // initially look only in root items\r\n for (const childItem of item.items) {\r\n // istanbul ignore else\r\n if (ToolbarItemUtilities.isActionButton(childItem)) {\r\n return childItem;\r\n }\r\n }\r\n\r\n // if not found look inside groups\r\n return getFirstAvailableChildActionItem(item);\r\n}\r\n\r\n/** Expandable Group button Item\r\n * @public\r\n */\r\nexport function PopupItemWithDrag(props: PopupItemWithDragProps) {\r\n const [isPanelShown, setPanelShown] = React.useState(false);\r\n const [activeAction, setActiveAction] = React.useState(getActiveAction(props.groupItem));\r\n const { expandsTo, overflowExpandsTo, panelAlignment, onPopupPanelOpenClose } = useToolbarWithOverflowDirectionContext();\r\n\r\n React.useEffect(() => {\r\n const newActiveAction = getActiveAction(props.groupItem);\r\n // istanbul ignore else\r\n if (newActiveAction) {\r\n // istanbul ignore next\r\n if (newActiveAction.isActive) {\r\n setActiveAction(newActiveAction);\r\n } else {\r\n if (activeAction && activeAction.isActive) {\r\n setActiveAction({ ...activeAction, isActive: false });\r\n }\r\n }\r\n }\r\n }, [props.groupItem, activeAction]);\r\n\r\n const processPanelOpenClose = React.useCallback((isOpening: boolean) => {\r\n setPanelShown((prev) => {\r\n // istanbul ignore else\r\n if (prev !== isOpening)\r\n onPopupPanelOpenClose(isOpening);\r\n return isOpening;\r\n });\r\n }, [setPanelShown, onPopupPanelOpenClose]);\r\n\r\n // handle open and closing popup panel\r\n const onOpenPanel = React.useCallback(() => {\r\n processPanelOpenClose(!isPanelShown);\r\n }, [isPanelShown, processPanelOpenClose]);\r\n\r\n // handle open and closing popup panel\r\n const onGroupButtonClick = React.useCallback(() => {\r\n // only execute action if not disabled\r\n activeAction && !ConditionalBooleanValue.getValue(activeAction.isDisabled) && activeAction.execute();\r\n }, [activeAction]);\r\n\r\n const badge = activeAction ? BadgeUtilities.getComponentForBadgeType(activeAction.badgeType) : props.badge;\r\n const icon = activeAction ? IconHelper.getIconReactNode(activeAction.icon, activeAction.internalData) : props.icon;\r\n const title = activeAction ? ConditionalStringValue.getValue(activeAction.label) : props.title;\r\n const isActive = activeAction ? activeAction.isActive : props.isActive;\r\n const isDisabled = ConditionalBooleanValue.getValue(activeAction ? activeAction.isDisabled : props.isDisabled);\r\n\r\n const { handlePointerDown, handleButtonClick } = useDragInteraction(onGroupButtonClick, onOpenPanel);\r\n\r\n const className = classnames(\r\n \"components-toolbar-button-item\",\r\n \"components-toolbar-expandable-button\",\r\n isActive && \"components-active\",\r\n isDisabled && \"components-disabled-drag\",\r\n props.className);\r\n\r\n const [targetRef, target] = useRefState<HTMLButtonElement>();\r\n const handleClose = React.useCallback(() => {\r\n processPanelOpenClose(false);\r\n }, [processPanelOpenClose]);\r\n const { hasOverflow } = useToolItemEntryContext();\r\n const expandsToDirection = hasOverflow ? /* istanbul ignore next */ overflowExpandsTo : expandsTo;\r\n\r\n return (\r\n <ToolbarPopupContext.Provider value={{\r\n closePanel: /* istanbul ignore next */ () => processPanelOpenClose(false),\r\n setSelectedItem: /* istanbul ignore next */ (buttonItem: ActionButton) => setActiveAction(buttonItem),\r\n }\r\n }>\r\n <button\r\n data-item-id={props.itemId}\r\n data-item-type=\"action-tool-button\"\r\n data-item-group-priority={props.groupPriority}\r\n data-item-priority={props.itemPriority}\r\n data-item-provider-id={props.providerId}\r\n ref={targetRef}\r\n onPointerDown={handlePointerDown}\r\n onClick={handleButtonClick}\r\n onKeyDown={props.onKeyDown}\r\n className={className}\r\n style={props.style}\r\n title={title}\r\n >\r\n <div className=\"components-icon\">\r\n {icon}\r\n </div>\r\n {props.badge &&\r\n <div className=\"components-badge\">\r\n {badge}\r\n </div>\r\n }\r\n <div className=\"components-triangle\" />\r\n </button>\r\n <PopupItemPopup\r\n isOpen={isPanelShown}\r\n onClose={handleClose}\r\n position={toToolbarPopupRelativePosition(expandsToDirection, panelAlignment)}\r\n target={target}\r\n >\r\n <PopupItemsPanel groupItem={props.groupItem} activateOnPointerUp={true} />\r\n </PopupItemPopup>\r\n </ToolbarPopupContext.Provider>\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function toToolbarPopupRelativePosition(expandsTo: Direction, alignment: ToolbarPanelAlignment): RelativePosition {\r\n // istanbul ignore next\r\n switch (expandsTo) {\r\n case Direction.Bottom: {\r\n if (alignment === ToolbarPanelAlignment.End)\r\n return RelativePosition.BottomRight;\r\n return RelativePosition.BottomLeft;\r\n }\r\n case Direction.Left:\r\n return RelativePosition.LeftTop;\r\n case Direction.Right:\r\n return RelativePosition.RightTop;\r\n case Direction.Top:\r\n return RelativePosition.Top;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PopupItemWithDrag.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemWithDrag.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./PopupItem.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { ActionButton, ConditionalBooleanValue, ConditionalStringValue, GroupButton, RelativePosition, ToolbarItemUtilities } from \"@itwin/appui-abstract\";\nimport { BadgeUtilities, IconHelper, useRefState } from \"@itwin/core-react\";\nimport { ToolbarButtonItemProps } from \"./Item\";\nimport { PopupItemPopup, ToolbarPopupContext } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport { ToolbarPanelAlignment, useToolbarWithOverflowDirectionContext, useToolItemEntryContext } from \"./ToolbarWithOverflow\";\nimport { useDragInteraction } from \"./useDragInteraction\";\nimport { Direction } from \"./utilities/Direction\";\n\n/** Properties of [[PopupItem]] component.\n * @public\n */\nexport interface PopupItemWithDragProps extends ToolbarButtonItemProps {\n /** Panel of the toolbar. */\n groupItem: GroupButton;\n}\n\nfunction tryFindActiveAction(item: GroupButton): ActionButton | undefined {\n for (const childItem of item.items) {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(childItem)) {\n if (childItem.isActive)\n return childItem;\n } else if (ToolbarItemUtilities.isGroupButton(childItem)) {\n const nestedChild = tryFindActiveAction(childItem);\n if (nestedChild)\n return nestedChild;\n }\n }\n return undefined;\n}\n\nfunction getFirstAvailableChildActionItem(item: GroupButton): ActionButton | undefined {\n for (const childItem of item.items) {\n if (ToolbarItemUtilities.isActionButton(childItem)) {\n return childItem;\n } else {\n // istanbul ignore else\n if (ToolbarItemUtilities.isGroupButton(childItem)) {\n const nestedChild = getFirstAvailableChildActionItem(childItem);\n // istanbul ignore else\n if (nestedChild)\n return nestedChild;\n }\n }\n }\n return undefined;\n}\n\nfunction getActiveAction(item: GroupButton): ActionButton | undefined {\n const activeItem = tryFindActiveAction(item);\n if (activeItem)\n return activeItem;\n\n // initially look only in root items\n for (const childItem of item.items) {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(childItem)) {\n return childItem;\n }\n }\n\n // if not found look inside groups\n return getFirstAvailableChildActionItem(item);\n}\n\n/** Expandable Group button Item\n * @public\n */\nexport function PopupItemWithDrag(props: PopupItemWithDragProps) {\n const [isPanelShown, setPanelShown] = React.useState(false);\n const [activeAction, setActiveAction] = React.useState(getActiveAction(props.groupItem));\n const { expandsTo, overflowExpandsTo, panelAlignment, onPopupPanelOpenClose } = useToolbarWithOverflowDirectionContext();\n\n React.useEffect(() => {\n const newActiveAction = getActiveAction(props.groupItem);\n // istanbul ignore else\n if (newActiveAction) {\n // istanbul ignore next\n if (newActiveAction.isActive) {\n setActiveAction(newActiveAction);\n } else {\n if (activeAction && activeAction.isActive) {\n setActiveAction({ ...activeAction, isActive: false });\n }\n }\n }\n }, [props.groupItem, activeAction]);\n\n const processPanelOpenClose = React.useCallback((isOpening: boolean) => {\n setPanelShown((prev) => {\n // istanbul ignore else\n if (prev !== isOpening)\n onPopupPanelOpenClose(isOpening);\n return isOpening;\n });\n }, [setPanelShown, onPopupPanelOpenClose]);\n\n // handle open and closing popup panel\n const onOpenPanel = React.useCallback(() => {\n processPanelOpenClose(!isPanelShown);\n }, [isPanelShown, processPanelOpenClose]);\n\n // handle open and closing popup panel\n const onGroupButtonClick = React.useCallback(() => {\n // only execute action if not disabled\n activeAction && !ConditionalBooleanValue.getValue(activeAction.isDisabled) && activeAction.execute();\n }, [activeAction]);\n\n const badge = activeAction ? BadgeUtilities.getComponentForBadgeType(activeAction.badgeType) : props.badge;\n const icon = activeAction ? IconHelper.getIconReactNode(activeAction.icon, activeAction.internalData) : props.icon;\n const title = activeAction ? ConditionalStringValue.getValue(activeAction.label) : props.title;\n const isActive = activeAction ? activeAction.isActive : props.isActive;\n const isDisabled = ConditionalBooleanValue.getValue(activeAction ? activeAction.isDisabled : props.isDisabled);\n\n const { handlePointerDown, handleButtonClick } = useDragInteraction(onGroupButtonClick, onOpenPanel);\n\n const className = classnames(\n \"components-toolbar-button-item\",\n \"components-toolbar-expandable-button\",\n isActive && \"components-active\",\n isDisabled && \"components-disabled-drag\",\n props.className);\n\n const [targetRef, target] = useRefState<HTMLButtonElement>();\n const handleClose = React.useCallback(() => {\n processPanelOpenClose(false);\n }, [processPanelOpenClose]);\n const { hasOverflow } = useToolItemEntryContext();\n const expandsToDirection = hasOverflow ? /* istanbul ignore next */ overflowExpandsTo : expandsTo;\n\n return (\n <ToolbarPopupContext.Provider value={{\n closePanel: /* istanbul ignore next */ () => processPanelOpenClose(false),\n setSelectedItem: /* istanbul ignore next */ (buttonItem: ActionButton) => setActiveAction(buttonItem),\n }\n }>\n <button\n data-item-id={props.itemId}\n data-item-type=\"action-tool-button\"\n data-item-group-priority={props.groupPriority}\n data-item-priority={props.itemPriority}\n data-item-provider-id={props.providerId}\n ref={targetRef}\n onPointerDown={handlePointerDown}\n onClick={handleButtonClick}\n onKeyDown={props.onKeyDown}\n className={className}\n style={props.style}\n title={title}\n >\n <div className=\"components-icon\">\n {icon}\n </div>\n {props.badge &&\n <div className=\"components-badge\">\n {badge}\n </div>\n }\n <div className=\"components-triangle\" />\n </button>\n <PopupItemPopup\n isOpen={isPanelShown}\n onClose={handleClose}\n position={toToolbarPopupRelativePosition(expandsToDirection, panelAlignment)}\n target={target}\n >\n <PopupItemsPanel groupItem={props.groupItem} activateOnPointerUp={true} />\n </PopupItemPopup>\n </ToolbarPopupContext.Provider>\n );\n}\n\n/** @internal */\nexport function toToolbarPopupRelativePosition(expandsTo: Direction, alignment: ToolbarPanelAlignment): RelativePosition {\n // istanbul ignore next\n switch (expandsTo) {\n case Direction.Bottom: {\n if (alignment === ToolbarPanelAlignment.End)\n return RelativePosition.BottomRight;\n return RelativePosition.BottomLeft;\n }\n case Direction.Left:\n return RelativePosition.LeftTop;\n case Direction.Right:\n return RelativePosition.RightTop;\n case Direction.Top:\n return RelativePosition.Top;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopupItemsPanel.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Toolbar\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ActionButton, ConditionalBooleanValue, ConditionalStringValue, GroupButton, ToolbarItemUtilities } from \"@itwin/appui-abstract\";\r\nimport { BadgeUtilities, IconHelper } from \"@itwin/core-react\";\r\nimport { BackArrow } from \"./groupPanel/BackArrow\";\r\nimport { GroupColumn } from \"./groupPanel/Column\";\r\nimport { Columns } from \"./groupPanel/Columns\";\r\nimport { Panel } from \"./groupPanel/Panel\";\r\nimport { Title } from \"./groupPanel/Title\";\r\nimport { GroupToolExpander } from \"./groupPanel/tool/Expander\";\r\nimport { GroupTool } from \"./groupPanel/tool/Tool\";\r\nimport { useToolbarPopupContext } from \"./PopupItem\";\r\nimport { useToolbarWithOverflowDirectionContext } from \"./ToolbarWithOverflow\";\r\n\r\nfunction getNumItemsInColumn(numTotalItems: number): number {\r\n if (numTotalItems <= 6)\r\n return numTotalItems;\r\n if (numTotalItems <= 24)\r\n return Math.ceil(numTotalItems / 2);\r\n if (numTotalItems <= 36)\r\n return Math.ceil(numTotalItems / 3);\r\n return Math.ceil(numTotalItems / 4);\r\n}\r\n\r\ninterface PopupItemsPanelProps {\r\n groupItem: GroupButton;\r\n activateOnPointerUp?: boolean;\r\n}\r\n\r\n/** Component that displays a list of tools in a panel.\r\n * @internal future\r\n */\r\nexport function PopupItemsPanel(props: PopupItemsPanelProps) {\r\n const [groupArray, setGroupArray] = React.useState([props.groupItem]);\r\n const activeGroup = React.useMemo(() => groupArray[0], [groupArray]);\r\n const items = React.useMemo(() => activeGroup.items, [activeGroup]);\r\n\r\n const preferredNumItemsInColumn = getNumItemsInColumn(items.length);\r\n\r\n // Divide items equally between columns.\r\n const numberOfColumns = Math.ceil(items.length / preferredNumItemsInColumn);\r\n const numItemsPerColumn = Math.ceil(items.length / numberOfColumns);\r\n\r\n const columnToItems = React.useMemo(() => items.reduce<ReadonlyArray<ReadonlyArray<GroupButton | ActionButton>>>((acc, item, index) => {\r\n const columnIndex = Math.floor(index / numItemsPerColumn);\r\n if (columnIndex >= acc.length) {\r\n return [\r\n ...acc,\r\n [item],\r\n ];\r\n }\r\n return [\r\n ...acc.slice(0, columnIndex),\r\n [\r\n ...acc[columnIndex],\r\n item,\r\n ],\r\n ...acc.slice(columnIndex + 1),\r\n ];\r\n }, []), [items, numItemsPerColumn]);\r\n\r\n const handleGroupItemClick = React.useCallback((item: GroupButton | ActionButton) => {\r\n // istanbul ignore else\r\n if (ToolbarItemUtilities.isGroupButton(item)) {\r\n // push group to front of array\r\n setGroupArray([item, ...groupArray]);\r\n }\r\n }, [groupArray]);\r\n\r\n const handleBackArrowClick = React.useCallback(() => {\r\n // istanbul ignore else\r\n if (groupArray.length > 1) {\r\n setGroupArray(groupArray.slice(1));\r\n }\r\n }, [groupArray]);\r\n\r\n const { closePanel, setSelectedItem } = useToolbarPopupContext();\r\n const { onItemExecuted, onKeyDown } = useToolbarWithOverflowDirectionContext();\r\n\r\n const handleOnPointerUp = React.useCallback(/* istanbul ignore next */(panelItem: GroupButton | ActionButton) => {\r\n // istanbul ignore else\r\n if (ToolbarItemUtilities.isActionButton(panelItem)) {\r\n props.activateOnPointerUp && setSelectedItem && setSelectedItem(panelItem);\r\n props.activateOnPointerUp && panelItem.execute();\r\n onItemExecuted(panelItem);\r\n props.activateOnPointerUp && closePanel();\r\n }\r\n }, [props.activateOnPointerUp, setSelectedItem, closePanel, onItemExecuted]);\r\n\r\n const handleActionItemClick = React.useCallback((panelItem: GroupButton | ActionButton) => {\r\n // istanbul ignore else\r\n if (ToolbarItemUtilities.isActionButton(panelItem)) {\r\n setSelectedItem && setSelectedItem(panelItem);\r\n panelItem.execute();\r\n onItemExecuted(panelItem);\r\n closePanel();\r\n }\r\n }, [setSelectedItem, closePanel, onItemExecuted]);\r\n\r\n // istanbul ignore next - NEEDSWORK add complete tests\r\n const handleOnKeyDown = React.useCallback((e: React.KeyboardEvent) => {\r\n onKeyDown(e);\r\n }, [onKeyDown]);\r\n\r\n // build n-number of columns\r\n const columns = React.useMemo(() => columnToItems.map((columnItems, columnIndex) =>\r\n <GroupColumn key={columnIndex}>\r\n {columnItems.map((panelItem) => {\r\n const badge = BadgeUtilities.getComponentForBadgeType(panelItem.badgeType);\r\n const icon = IconHelper.getIconReactNode(panelItem.icon, panelItem.internalData);\r\n const label = ConditionalStringValue.getValue(panelItem.label);\r\n if (ToolbarItemUtilities.isGroupButton(panelItem)) {\r\n return (\r\n <GroupToolExpander\r\n isDisabled={ConditionalBooleanValue.getValue(panelItem.isDisabled)}\r\n key={panelItem.id}\r\n label={label}\r\n icon={icon}\r\n badge={badge}\r\n item={panelItem}\r\n onClick={handleGroupItemClick}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <GroupTool\r\n isDisabled={ConditionalBooleanValue.getValue(panelItem.isDisabled)}\r\n isActive={!!panelItem.isActive}\r\n key={panelItem.id}\r\n label={label}\r\n icon={icon}\r\n item={panelItem}\r\n onClick={handleActionItemClick}\r\n onPointerUp={handleOnPointerUp}\r\n badge={badge}\r\n />\r\n );\r\n })}\r\n </GroupColumn>), [columnToItems, handleActionItemClick, handleGroupItemClick, handleOnPointerUp]);\r\n\r\n // ensure we have a panel title for nested groups\r\n const titleString = activeGroup.panelLabel ? activeGroup.panelLabel : activeGroup.label;\r\n const panelTitle = React.useMemo(() => ConditionalStringValue.getValue(titleString), [titleString]);\r\n const className = classnames(\r\n 1 === groupArray.length && \"components-toolbar-item-expandable-group-group\",\r\n groupArray.length > 1 && \"components-toolbar-item-expandable-group-nested\",\r\n );\r\n\r\n return (\r\n <Panel className={className} onKeyDown={handleOnKeyDown} >\r\n {groupArray.length > 1 &&\r\n <BackArrow\r\n className=\"components-back\"\r\n onClick={handleBackArrowClick}\r\n />\r\n }\r\n {panelTitle &&\r\n <Title>\r\n {panelTitle}\r\n </Title>\r\n }\r\n {columns &&\r\n <Columns>\r\n {columns}\r\n </Columns>\r\n }\r\n </Panel>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"file":"PopupItemsPanel.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { ActionButton, ConditionalBooleanValue, ConditionalStringValue, GroupButton, ToolbarItemUtilities } from \"@itwin/appui-abstract\";\nimport { BadgeUtilities, IconHelper } from \"@itwin/core-react\";\nimport { BackArrow } from \"./groupPanel/BackArrow\";\nimport { GroupColumn } from \"./groupPanel/Column\";\nimport { Columns } from \"./groupPanel/Columns\";\nimport { Panel } from \"./groupPanel/Panel\";\nimport { Title } from \"./groupPanel/Title\";\nimport { GroupToolExpander } from \"./groupPanel/tool/Expander\";\nimport { GroupTool } from \"./groupPanel/tool/Tool\";\nimport { useToolbarPopupContext } from \"./PopupItem\";\nimport { useToolbarWithOverflowDirectionContext } from \"./ToolbarWithOverflow\";\n\nfunction getNumItemsInColumn(numTotalItems: number): number {\n if (numTotalItems <= 6)\n return numTotalItems;\n if (numTotalItems <= 24)\n return Math.ceil(numTotalItems / 2);\n if (numTotalItems <= 36)\n return Math.ceil(numTotalItems / 3);\n return Math.ceil(numTotalItems / 4);\n}\n\ninterface PopupItemsPanelProps {\n groupItem: GroupButton;\n activateOnPointerUp?: boolean;\n}\n\n/** Component that displays a list of tools in a panel.\n * @internal future\n */\nexport function PopupItemsPanel(props: PopupItemsPanelProps) {\n const [groupArray, setGroupArray] = React.useState([props.groupItem]);\n const activeGroup = React.useMemo(() => groupArray[0], [groupArray]);\n const items = React.useMemo(() => activeGroup.items, [activeGroup]);\n\n const preferredNumItemsInColumn = getNumItemsInColumn(items.length);\n\n // Divide items equally between columns.\n const numberOfColumns = Math.ceil(items.length / preferredNumItemsInColumn);\n const numItemsPerColumn = Math.ceil(items.length / numberOfColumns);\n\n const columnToItems = React.useMemo(() => items.reduce<ReadonlyArray<ReadonlyArray<GroupButton | ActionButton>>>((acc, item, index) => {\n const columnIndex = Math.floor(index / numItemsPerColumn);\n if (columnIndex >= acc.length) {\n return [\n ...acc,\n [item],\n ];\n }\n return [\n ...acc.slice(0, columnIndex),\n [\n ...acc[columnIndex],\n item,\n ],\n ...acc.slice(columnIndex + 1),\n ];\n }, []), [items, numItemsPerColumn]);\n\n const handleGroupItemClick = React.useCallback((item: GroupButton | ActionButton) => {\n // istanbul ignore else\n if (ToolbarItemUtilities.isGroupButton(item)) {\n // push group to front of array\n setGroupArray([item, ...groupArray]);\n }\n }, [groupArray]);\n\n const handleBackArrowClick = React.useCallback(() => {\n // istanbul ignore else\n if (groupArray.length > 1) {\n setGroupArray(groupArray.slice(1));\n }\n }, [groupArray]);\n\n const { closePanel, setSelectedItem } = useToolbarPopupContext();\n const { onItemExecuted, onKeyDown } = useToolbarWithOverflowDirectionContext();\n\n const handleOnPointerUp = React.useCallback(/* istanbul ignore next */(panelItem: GroupButton | ActionButton) => {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(panelItem)) {\n props.activateOnPointerUp && setSelectedItem && setSelectedItem(panelItem);\n props.activateOnPointerUp && panelItem.execute();\n onItemExecuted(panelItem);\n props.activateOnPointerUp && closePanel();\n }\n }, [props.activateOnPointerUp, setSelectedItem, closePanel, onItemExecuted]);\n\n const handleActionItemClick = React.useCallback((panelItem: GroupButton | ActionButton) => {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(panelItem)) {\n setSelectedItem && setSelectedItem(panelItem);\n panelItem.execute();\n onItemExecuted(panelItem);\n closePanel();\n }\n }, [setSelectedItem, closePanel, onItemExecuted]);\n\n // istanbul ignore next - NEEDSWORK add complete tests\n const handleOnKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n onKeyDown(e);\n }, [onKeyDown]);\n\n // build n-number of columns\n const columns = React.useMemo(() => columnToItems.map((columnItems, columnIndex) =>\n <GroupColumn key={columnIndex}>\n {columnItems.map((panelItem) => {\n const badge = BadgeUtilities.getComponentForBadgeType(panelItem.badgeType);\n const icon = IconHelper.getIconReactNode(panelItem.icon, panelItem.internalData);\n const label = ConditionalStringValue.getValue(panelItem.label);\n if (ToolbarItemUtilities.isGroupButton(panelItem)) {\n return (\n <GroupToolExpander\n isDisabled={ConditionalBooleanValue.getValue(panelItem.isDisabled)}\n key={panelItem.id}\n label={label}\n icon={icon}\n badge={badge}\n item={panelItem}\n onClick={handleGroupItemClick}\n />\n );\n }\n\n return (\n <GroupTool\n isDisabled={ConditionalBooleanValue.getValue(panelItem.isDisabled)}\n isActive={!!panelItem.isActive}\n key={panelItem.id}\n label={label}\n icon={icon}\n item={panelItem}\n onClick={handleActionItemClick}\n onPointerUp={handleOnPointerUp}\n badge={badge}\n />\n );\n })}\n </GroupColumn>), [columnToItems, handleActionItemClick, handleGroupItemClick, handleOnPointerUp]);\n\n // ensure we have a panel title for nested groups\n const titleString = activeGroup.panelLabel ? activeGroup.panelLabel : activeGroup.label;\n const panelTitle = React.useMemo(() => ConditionalStringValue.getValue(titleString), [titleString]);\n const className = classnames(\n 1 === groupArray.length && \"components-toolbar-item-expandable-group-group\",\n groupArray.length > 1 && \"components-toolbar-item-expandable-group-nested\",\n );\n\n return (\n <Panel className={className} onKeyDown={handleOnKeyDown} >\n {groupArray.length > 1 &&\n <BackArrow\n className=\"components-back\"\n onClick={handleBackArrowClick}\n />\n }\n {panelTitle &&\n <Title>\n {panelTitle}\n </Title>\n }\n {columns &&\n <Columns>\n {columns}\n </Columns>\n }\n </Panel>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Toolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Toolbar\r\n */\r\n\r\nimport \"./Toolbar.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport {\r\n CommonToolbarItem, OnItemExecutedFunc,\r\n} from \"@itwin/appui-abstract\";\r\nimport { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\r\nimport { ToolbarItems } from \"./Items\";\r\nimport { Direction, OrthogonalDirection, OrthogonalDirectionHelpers } from \"./utilities/Direction\";\r\nimport { getToolbarDirection, ToolbarItemComponent, ToolbarItemContext, ToolbarOpacitySetting, ToolbarPanelAlignment, ToolbarWithOverflowDirectionContext } from \"./ToolbarWithOverflow\";\r\n\r\n/** Properties of [[Toolbar]] component.\r\n * @public\r\n * @deprecated in 4.0. Use [ToolbarProps]($appui-react) instead.\r\n */\r\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\r\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\r\n expandsTo?: Direction;\r\n /** Definitions for items of the toolbar. Items are expected to be already sorted by group and item. */\r\n items: CommonToolbarItem[];\r\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\r\n panelAlignment?: ToolbarPanelAlignment;\r\n /** Use Drag Interaction to open popups with nest action buttons */\r\n useDragInteraction?: boolean;\r\n /** Determines whether to use mouse proximity to alter the opacity of the toolbar */\r\n toolbarOpacitySetting?: ToolbarOpacitySetting;\r\n /** Optional function to call on any item execution */\r\n onItemExecuted?: OnItemExecutedFunc;\r\n /** Optional function to call on any KeyDown events processed by toolbar */\r\n onKeyDown?: (e: React.KeyboardEvent) => void;\r\n}\r\n\r\nfunction getItemWrapperClass(child: React.ReactNode) {\r\n // istanbul ignore else\r\n if (React.isValidElement(child)) {\r\n if (child.props && child.props.addGroupSeparator)\r\n return \"components-toolbar-button-add-gap-before\";\r\n }\r\n return \"\";\r\n}\r\n\r\n/** Component that displays toolbar items.\r\n * @public\r\n * @deprecated in 4.0. Use [Toolbar]($appui-react) instead.\r\n */\r\nexport function Toolbar(props: ToolbarProps) { // eslint-disable-line deprecation/deprecation\r\n const expandsTo = props.expandsTo ? props.expandsTo : Direction.Bottom;\r\n const useDragInteraction = !!props.useDragInteraction;\r\n const panelAlignment = props.panelAlignment ? props.panelAlignment : ToolbarPanelAlignment.Start;\r\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\r\n\r\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\r\n // use setTimeout to avoid warning about setting state in Toolbar from render method of PopupItem/PopupItemWithDrag\r\n setTimeout(() => {\r\n setPopupPanelCount((prev) => {\r\n const nextCount = isOpening ? (prev + 1) : (prev - 1);\r\n // eslint-disable-next-line no-console\r\n // console.log(`new popup count = ${nextCount}`);\r\n return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;\r\n });\r\n });\r\n }, []);\r\n\r\n const availableNodes = React.useMemo<React.ReactNode[]>(() => {\r\n return props.items.map((item, index) => {\r\n let addGroupSeparator = false;\r\n if (index > 0)\r\n addGroupSeparator = item.groupPriority !== props.items[index - 1].groupPriority;\r\n return (\r\n <ToolbarItemComponent\r\n key={item.id}\r\n item={item}\r\n addGroupSeparator={!!addGroupSeparator}\r\n />\r\n );\r\n });\r\n }, [props.items]);\r\n\r\n const direction = getToolbarDirection(expandsTo);\r\n const className = classnames(\r\n \"components-toolbar-overflow-sizer\",\r\n OrthogonalDirectionHelpers.getCssClassName(direction),\r\n props.className);\r\n\r\n // needed to construct DOM structure identical to ToolbarWithOverflow so same css can be applied.\r\n const wrapperClassName = classnames(\r\n \"components-toolbar-item-container\",\r\n OrthogonalDirectionHelpers.getCssClassName(direction),\r\n );\r\n\r\n return (\r\n <ToolbarWithOverflowDirectionContext.Provider value={\r\n {\r\n expandsTo, direction, overflowExpandsTo: Direction.Right, panelAlignment, useDragInteraction,\r\n toolbarOpacitySetting: props.toolbarOpacitySetting ? props.toolbarOpacitySetting : ToolbarOpacitySetting.Proximity,\r\n overflowDirection: OrthogonalDirection.Horizontal,\r\n openPopupCount: popupPanelCount, onPopupPanelOpenClose: handlePopupPanelOpenClose, overflowDisplayActive: false,\r\n onItemExecuted: props.onItemExecuted ? props.onItemExecuted : /* istanbul ignore next */ () => { },\r\n onKeyDown: props.onKeyDown ? props.onKeyDown : /* istanbul ignore next */ (_e: React.KeyboardEvent) => { },\r\n }\r\n }>\r\n <ToolbarItemContext.Provider\r\n value={{\r\n hasOverflow: false,\r\n useHeight: false,\r\n onResize: /* istanbul ignore next */ () => { },\r\n }}\r\n >\r\n {(availableNodes.length > 0) &&\r\n <div\r\n className={className}\r\n style={props.style}\r\n onKeyDown={props.onKeyDown}\r\n role=\"presentation\"\r\n >\r\n <ToolbarItems\r\n className=\"components-items\"\r\n direction={direction}\r\n >\r\n {availableNodes.map((child, index) => <div key={index} className={`${wrapperClassName} ${getItemWrapperClass(child)}`}>{child}</div>)}\r\n </ToolbarItems>\r\n </div>\r\n }\r\n </ToolbarItemContext.Provider>\r\n </ToolbarWithOverflowDirectionContext.Provider >\r\n );\r\n}\r\n"]}
1
+ {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Toolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Toolbar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport {\n CommonToolbarItem, OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport { ToolbarItems } from \"./Items\";\nimport { Direction, OrthogonalDirection, OrthogonalDirectionHelpers } from \"./utilities/Direction\";\nimport { getToolbarDirection, ToolbarItemComponent, ToolbarItemContext, ToolbarOpacitySetting, ToolbarPanelAlignment, ToolbarWithOverflowDirectionContext } from \"./ToolbarWithOverflow\";\n\n/** Properties of [[Toolbar]] component.\n * @public\n * @deprecated in 4.0. Use [ToolbarProps]($appui-react) instead.\n */\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Definitions for items of the toolbar. Items are expected to be already sorted by group and item. */\n items: CommonToolbarItem[];\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\n panelAlignment?: ToolbarPanelAlignment;\n /** Use Drag Interaction to open popups with nest action buttons */\n useDragInteraction?: boolean;\n /** Determines whether to use mouse proximity to alter the opacity of the toolbar */\n toolbarOpacitySetting?: ToolbarOpacitySetting;\n /** Optional function to call on any item execution */\n onItemExecuted?: OnItemExecutedFunc;\n /** Optional function to call on any KeyDown events processed by toolbar */\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction getItemWrapperClass(child: React.ReactNode) {\n // istanbul ignore else\n if (React.isValidElement(child)) {\n if (child.props && child.props.addGroupSeparator)\n return \"components-toolbar-button-add-gap-before\";\n }\n return \"\";\n}\n\n/** Component that displays toolbar items.\n * @public\n * @deprecated in 4.0. Use [Toolbar]($appui-react) instead.\n */\nexport function Toolbar(props: ToolbarProps) { // eslint-disable-line deprecation/deprecation\n const expandsTo = props.expandsTo ? props.expandsTo : Direction.Bottom;\n const useDragInteraction = !!props.useDragInteraction;\n const panelAlignment = props.panelAlignment ? props.panelAlignment : ToolbarPanelAlignment.Start;\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\n\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\n // use setTimeout to avoid warning about setting state in Toolbar from render method of PopupItem/PopupItemWithDrag\n setTimeout(() => {\n setPopupPanelCount((prev) => {\n const nextCount = isOpening ? (prev + 1) : (prev - 1);\n // eslint-disable-next-line no-console\n // console.log(`new popup count = ${nextCount}`);\n return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;\n });\n });\n }, []);\n\n const availableNodes = React.useMemo<React.ReactNode[]>(() => {\n return props.items.map((item, index) => {\n let addGroupSeparator = false;\n if (index > 0)\n addGroupSeparator = item.groupPriority !== props.items[index - 1].groupPriority;\n return (\n <ToolbarItemComponent\n key={item.id}\n item={item}\n addGroupSeparator={!!addGroupSeparator}\n />\n );\n });\n }, [props.items]);\n\n const direction = getToolbarDirection(expandsTo);\n const className = classnames(\n \"components-toolbar-overflow-sizer\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n props.className);\n\n // needed to construct DOM structure identical to ToolbarWithOverflow so same css can be applied.\n const wrapperClassName = classnames(\n \"components-toolbar-item-container\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n );\n\n return (\n <ToolbarWithOverflowDirectionContext.Provider value={\n {\n expandsTo, direction, overflowExpandsTo: Direction.Right, panelAlignment, useDragInteraction,\n toolbarOpacitySetting: props.toolbarOpacitySetting ? props.toolbarOpacitySetting : ToolbarOpacitySetting.Proximity,\n overflowDirection: OrthogonalDirection.Horizontal,\n openPopupCount: popupPanelCount, onPopupPanelOpenClose: handlePopupPanelOpenClose, overflowDisplayActive: false,\n onItemExecuted: props.onItemExecuted ? props.onItemExecuted : /* istanbul ignore next */ () => { },\n onKeyDown: props.onKeyDown ? props.onKeyDown : /* istanbul ignore next */ (_e: React.KeyboardEvent) => { },\n }\n }>\n <ToolbarItemContext.Provider\n value={{\n hasOverflow: false,\n useHeight: false,\n onResize: /* istanbul ignore next */ () => { },\n }}\n >\n {(availableNodes.length > 0) &&\n <div\n className={className}\n style={props.style}\n onKeyDown={props.onKeyDown}\n role=\"presentation\"\n >\n <ToolbarItems\n className=\"components-items\"\n direction={direction}\n >\n {availableNodes.map((child, index) => <div key={index} className={`${wrapperClassName} ${getItemWrapperClass(child)}`}>{child}</div>)}\n </ToolbarItems>\n </div>\n }\n </ToolbarItemContext.Provider>\n </ToolbarWithOverflowDirectionContext.Provider >\n );\n}\n"]}
@@ -1,19 +1,19 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
- @import "variables";
7
-
8
- .components-toolbar-overflow-sizer {
9
- display: inline-block;
10
- position: relative;
11
-
12
- &.components-horizontal {
13
- width: 100%
14
- }
15
-
16
- &.components-vertical {
17
- height: 100%
18
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
+ @import "variables";
7
+
8
+ .components-toolbar-overflow-sizer {
9
+ display: inline-block;
10
+ position: relative;
11
+
12
+ &.components-horizontal {
13
+ width: 100%
14
+ }
15
+
16
+ &.components-vertical {
17
+ height: 100%
18
+ }
19
19
  }