@itwin/components-react 4.13.4 → 4.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CHANGELOG.md +8 -5
  2. package/lib/cjs/components-react/common/ImageRenderer.d.ts.map +1 -1
  3. package/lib/cjs/components-react/common/ImageRenderer.js +0 -4
  4. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  5. package/lib/cjs/components-react/common/Links.d.ts.map +1 -1
  6. package/lib/cjs/components-react/common/Links.js +0 -7
  7. package/lib/cjs/components-react/common/Links.js.map +1 -1
  8. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  9. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js +0 -1
  10. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  11. package/lib/cjs/components-react/common/UseElementsScrollStorage.d.ts.map +1 -1
  12. package/lib/cjs/components-react/common/UseElementsScrollStorage.js +0 -1
  13. package/lib/cjs/components-react/common/UseElementsScrollStorage.js.map +1 -1
  14. package/lib/cjs/components-react/converters/DateTimeTypeConverter.d.ts.map +1 -1
  15. package/lib/cjs/components-react/converters/DateTimeTypeConverter.js +0 -13
  16. package/lib/cjs/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  17. package/lib/cjs/components-react/converters/TypeConverterManager.d.ts.map +1 -1
  18. package/lib/cjs/components-react/converters/TypeConverterManager.js +0 -1
  19. package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
  20. package/lib/cjs/components-react/datepicker/DateField.d.ts.map +1 -1
  21. package/lib/cjs/components-react/datepicker/DateField.js +1 -8
  22. package/lib/cjs/components-react/datepicker/DateField.js.map +1 -1
  23. package/lib/cjs/components-react/datepicker/DatePicker.d.ts.map +1 -1
  24. package/lib/cjs/components-react/datepicker/DatePicker.js +0 -2
  25. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  26. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  27. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js +0 -1
  28. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  29. package/lib/cjs/components-react/datepicker/TimeField.d.ts.map +1 -1
  30. package/lib/cjs/components-react/datepicker/TimeField.js +0 -9
  31. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  32. package/lib/cjs/components-react/editors/BooleanEditor.d.ts.map +1 -1
  33. package/lib/cjs/components-react/editors/BooleanEditor.js +0 -8
  34. package/lib/cjs/components-react/editors/BooleanEditor.js.map +1 -1
  35. package/lib/cjs/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  36. package/lib/cjs/components-react/editors/CustomNumberEditor.js +7 -25
  37. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  38. package/lib/cjs/components-react/editors/DateTimeEditor.d.ts.map +1 -1
  39. package/lib/cjs/components-react/editors/DateTimeEditor.js +0 -21
  40. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  41. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.d.ts.map +1 -1
  42. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js +1 -14
  43. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  44. package/lib/cjs/components-react/editors/EnumEditor.d.ts.map +1 -1
  45. package/lib/cjs/components-react/editors/EnumEditor.js +1 -13
  46. package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
  47. package/lib/cjs/components-react/editors/IconEditor.d.ts.map +1 -1
  48. package/lib/cjs/components-react/editors/IconEditor.js +0 -9
  49. package/lib/cjs/components-react/editors/IconEditor.js.map +1 -1
  50. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.d.ts.map +1 -1
  51. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.js +0 -6
  52. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  53. package/lib/cjs/components-react/editors/NumericInputEditor.d.ts.map +1 -1
  54. package/lib/cjs/components-react/editors/NumericInputEditor.js +1 -10
  55. package/lib/cjs/components-react/editors/NumericInputEditor.js.map +1 -1
  56. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  57. package/lib/cjs/components-react/editors/PopupButton.js +0 -2
  58. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  59. package/lib/cjs/components-react/editors/PropertyEditorManager.d.ts.map +1 -1
  60. package/lib/cjs/components-react/editors/PropertyEditorManager.js +0 -1
  61. package/lib/cjs/components-react/editors/PropertyEditorManager.js.map +1 -1
  62. package/lib/cjs/components-react/editors/SliderEditor.d.ts.map +1 -1
  63. package/lib/cjs/components-react/editors/SliderEditor.js +0 -10
  64. package/lib/cjs/components-react/editors/SliderEditor.js.map +1 -1
  65. package/lib/cjs/components-react/editors/TextEditor.d.ts.map +1 -1
  66. package/lib/cjs/components-react/editors/TextEditor.js +0 -7
  67. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  68. package/lib/cjs/components-react/editors/TextareaEditor.d.ts.map +1 -1
  69. package/lib/cjs/components-react/editors/TextareaEditor.js +0 -15
  70. package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
  71. package/lib/cjs/components-react/editors/ToggleEditor.d.ts.map +1 -1
  72. package/lib/cjs/components-react/editors/ToggleEditor.js +0 -9
  73. package/lib/cjs/components-react/editors/ToggleEditor.js.map +1 -1
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +0 -1
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +3 -4
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  79. package/lib/cjs/components-react/filtering/FilteringInput.d.ts.map +1 -1
  80. package/lib/cjs/components-react/filtering/FilteringInput.js +0 -1
  81. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  82. package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts.map +1 -1
  83. package/lib/cjs/components-react/iconpicker/IconPickerButton.js +0 -3
  84. package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
  85. package/lib/cjs/components-react/inputs/ParsedInput.d.ts.map +1 -1
  86. package/lib/cjs/components-react/inputs/ParsedInput.js +0 -5
  87. package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
  88. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts.map +1 -1
  89. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +0 -1
  90. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  91. package/lib/cjs/components-react/properties/renderers/PropertyGridColumns.js +1 -2
  92. package/lib/cjs/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  93. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.d.ts.map +1 -1
  94. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.js +0 -2
  95. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  96. package/lib/cjs/components-react/properties/renderers/PropertyView.d.ts.map +1 -1
  97. package/lib/cjs/components-react/properties/renderers/PropertyView.js +7 -4
  98. package/lib/cjs/components-react/properties/renderers/PropertyView.js.map +1 -1
  99. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts.map +1 -1
  100. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js +6 -3
  101. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  102. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +5 -5
  103. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +1 -0
  104. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  105. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +1 -0
  106. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  107. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +1 -0
  108. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  109. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -0
  110. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  111. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.js +5 -9
  112. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  113. package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.d.ts.map +1 -1
  114. package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.js +0 -2
  115. package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  116. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.d.ts.map +1 -1
  117. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +0 -1
  118. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  119. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
  120. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js +3 -4
  121. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  122. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts.map +1 -1
  123. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js +3 -4
  124. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  125. package/lib/cjs/components-react/propertygrid/component/PropertyList.d.ts.map +1 -1
  126. package/lib/cjs/components-react/propertygrid/component/PropertyList.js +0 -1
  127. package/lib/cjs/components-react/propertygrid/component/PropertyList.js.map +1 -1
  128. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  129. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js +0 -2
  130. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  131. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +0 -4
  132. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.d.ts.map +1 -1
  133. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js +0 -1
  134. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  135. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.d.ts.map +1 -1
  136. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js +0 -1
  137. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  138. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts.map +1 -1
  139. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -6
  140. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  141. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +0 -1
  142. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  143. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts.map +1 -1
  144. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +0 -2
  145. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  146. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +1 -2
  147. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  148. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  149. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +7 -24
  150. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  151. package/lib/cjs/components-react/toolbar/Items.d.ts.map +1 -1
  152. package/lib/cjs/components-react/toolbar/Items.js +0 -2
  153. package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
  154. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  155. package/lib/cjs/components-react/toolbar/OverflowPanel.js +0 -1
  156. package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
  157. package/lib/cjs/components-react/toolbar/PopupItem.d.ts.map +1 -1
  158. package/lib/cjs/components-react/toolbar/PopupItem.js +3 -6
  159. package/lib/cjs/components-react/toolbar/PopupItem.js.map +1 -1
  160. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  161. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js +3 -13
  162. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  163. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  164. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js +1 -7
  165. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  166. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  167. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.js +0 -3
  168. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  169. package/lib/cjs/components-react/toolbar/useDragInteraction.d.ts.map +1 -1
  170. package/lib/cjs/components-react/toolbar/useDragInteraction.js +0 -2
  171. package/lib/cjs/components-react/toolbar/useDragInteraction.js.map +1 -1
  172. package/lib/cjs/components-react/tree/TreeDataProvider.d.ts.map +1 -1
  173. package/lib/cjs/components-react/tree/TreeDataProvider.js +0 -1
  174. package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
  175. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.d.ts.map +1 -1
  176. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js +1 -8
  177. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  178. package/lib/cjs/components-react/tree/controlled/TreeModel.d.ts.map +1 -1
  179. package/lib/cjs/components-react/tree/controlled/TreeModel.js +0 -1
  180. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  181. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.d.ts.map +1 -1
  182. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +0 -4
  183. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  184. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
  185. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js +0 -5
  186. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  187. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.d.ts.map +1 -1
  188. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js +0 -1
  189. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  190. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.d.ts.map +1 -1
  191. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js +1 -10
  192. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  193. package/lib/esm/components-react/common/ImageRenderer.d.ts.map +1 -1
  194. package/lib/esm/components-react/common/ImageRenderer.js +0 -4
  195. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  196. package/lib/esm/components-react/common/Links.d.ts.map +1 -1
  197. package/lib/esm/components-react/common/Links.js +0 -7
  198. package/lib/esm/components-react/common/Links.js.map +1 -1
  199. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  200. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js +0 -1
  201. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  202. package/lib/esm/components-react/common/UseElementsScrollStorage.d.ts.map +1 -1
  203. package/lib/esm/components-react/common/UseElementsScrollStorage.js +0 -1
  204. package/lib/esm/components-react/common/UseElementsScrollStorage.js.map +1 -1
  205. package/lib/esm/components-react/converters/DateTimeTypeConverter.d.ts.map +1 -1
  206. package/lib/esm/components-react/converters/DateTimeTypeConverter.js +0 -13
  207. package/lib/esm/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  208. package/lib/esm/components-react/converters/TypeConverterManager.d.ts.map +1 -1
  209. package/lib/esm/components-react/converters/TypeConverterManager.js +0 -1
  210. package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
  211. package/lib/esm/components-react/datepicker/DateField.d.ts.map +1 -1
  212. package/lib/esm/components-react/datepicker/DateField.js +1 -8
  213. package/lib/esm/components-react/datepicker/DateField.js.map +1 -1
  214. package/lib/esm/components-react/datepicker/DatePicker.d.ts.map +1 -1
  215. package/lib/esm/components-react/datepicker/DatePicker.js +0 -2
  216. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  217. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  218. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js +0 -1
  219. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  220. package/lib/esm/components-react/datepicker/TimeField.d.ts.map +1 -1
  221. package/lib/esm/components-react/datepicker/TimeField.js +0 -9
  222. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  223. package/lib/esm/components-react/editors/BooleanEditor.d.ts.map +1 -1
  224. package/lib/esm/components-react/editors/BooleanEditor.js +0 -8
  225. package/lib/esm/components-react/editors/BooleanEditor.js.map +1 -1
  226. package/lib/esm/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  227. package/lib/esm/components-react/editors/CustomNumberEditor.js +7 -25
  228. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  229. package/lib/esm/components-react/editors/DateTimeEditor.d.ts.map +1 -1
  230. package/lib/esm/components-react/editors/DateTimeEditor.js +0 -21
  231. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  232. package/lib/esm/components-react/editors/EnumButtonGroupEditor.d.ts.map +1 -1
  233. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js +1 -14
  234. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  235. package/lib/esm/components-react/editors/EnumEditor.d.ts.map +1 -1
  236. package/lib/esm/components-react/editors/EnumEditor.js +1 -13
  237. package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
  238. package/lib/esm/components-react/editors/IconEditor.d.ts.map +1 -1
  239. package/lib/esm/components-react/editors/IconEditor.js +0 -9
  240. package/lib/esm/components-react/editors/IconEditor.js.map +1 -1
  241. package/lib/esm/components-react/editors/ImageCheckBoxEditor.d.ts.map +1 -1
  242. package/lib/esm/components-react/editors/ImageCheckBoxEditor.js +0 -6
  243. package/lib/esm/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  244. package/lib/esm/components-react/editors/NumericInputEditor.d.ts.map +1 -1
  245. package/lib/esm/components-react/editors/NumericInputEditor.js +1 -10
  246. package/lib/esm/components-react/editors/NumericInputEditor.js.map +1 -1
  247. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  248. package/lib/esm/components-react/editors/PopupButton.js +0 -2
  249. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  250. package/lib/esm/components-react/editors/PropertyEditorManager.d.ts.map +1 -1
  251. package/lib/esm/components-react/editors/PropertyEditorManager.js +0 -1
  252. package/lib/esm/components-react/editors/PropertyEditorManager.js.map +1 -1
  253. package/lib/esm/components-react/editors/SliderEditor.d.ts.map +1 -1
  254. package/lib/esm/components-react/editors/SliderEditor.js +0 -10
  255. package/lib/esm/components-react/editors/SliderEditor.js.map +1 -1
  256. package/lib/esm/components-react/editors/TextEditor.d.ts.map +1 -1
  257. package/lib/esm/components-react/editors/TextEditor.js +0 -7
  258. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  259. package/lib/esm/components-react/editors/TextareaEditor.d.ts.map +1 -1
  260. package/lib/esm/components-react/editors/TextareaEditor.js +0 -15
  261. package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
  262. package/lib/esm/components-react/editors/ToggleEditor.d.ts.map +1 -1
  263. package/lib/esm/components-react/editors/ToggleEditor.js +0 -9
  264. package/lib/esm/components-react/editors/ToggleEditor.js.map +1 -1
  265. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  266. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +0 -1
  267. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  268. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +3 -4
  269. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  270. package/lib/esm/components-react/filtering/FilteringInput.d.ts.map +1 -1
  271. package/lib/esm/components-react/filtering/FilteringInput.js +0 -1
  272. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  273. package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts.map +1 -1
  274. package/lib/esm/components-react/iconpicker/IconPickerButton.js +0 -3
  275. package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
  276. package/lib/esm/components-react/inputs/ParsedInput.d.ts.map +1 -1
  277. package/lib/esm/components-react/inputs/ParsedInput.js +0 -5
  278. package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
  279. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts.map +1 -1
  280. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +0 -1
  281. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  282. package/lib/esm/components-react/properties/renderers/PropertyGridColumns.js +1 -2
  283. package/lib/esm/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  284. package/lib/esm/components-react/properties/renderers/PropertyRenderer.d.ts.map +1 -1
  285. package/lib/esm/components-react/properties/renderers/PropertyRenderer.js +0 -2
  286. package/lib/esm/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  287. package/lib/esm/components-react/properties/renderers/PropertyView.d.ts.map +1 -1
  288. package/lib/esm/components-react/properties/renderers/PropertyView.js +7 -4
  289. package/lib/esm/components-react/properties/renderers/PropertyView.js.map +1 -1
  290. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts.map +1 -1
  291. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js +3 -3
  292. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  293. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +5 -5
  294. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +1 -0
  295. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  296. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +1 -0
  297. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  298. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +1 -0
  299. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  300. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -0
  301. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  302. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.js +5 -9
  303. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  304. package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.d.ts.map +1 -1
  305. package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.js +0 -2
  306. package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  307. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.d.ts.map +1 -1
  308. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +0 -1
  309. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  310. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
  311. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js +3 -4
  312. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  313. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts.map +1 -1
  314. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js +3 -4
  315. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  316. package/lib/esm/components-react/propertygrid/component/PropertyList.d.ts.map +1 -1
  317. package/lib/esm/components-react/propertygrid/component/PropertyList.js +0 -1
  318. package/lib/esm/components-react/propertygrid/component/PropertyList.js.map +1 -1
  319. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  320. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js +0 -2
  321. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  322. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +0 -4
  323. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.d.ts.map +1 -1
  324. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js +0 -1
  325. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  326. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.d.ts.map +1 -1
  327. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js +0 -1
  328. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  329. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts.map +1 -1
  330. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -3
  331. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  332. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +0 -1
  333. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  334. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts.map +1 -1
  335. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +0 -2
  336. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  337. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +1 -2
  338. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  339. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  340. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +7 -24
  341. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  342. package/lib/esm/components-react/toolbar/Items.d.ts.map +1 -1
  343. package/lib/esm/components-react/toolbar/Items.js +0 -2
  344. package/lib/esm/components-react/toolbar/Items.js.map +1 -1
  345. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  346. package/lib/esm/components-react/toolbar/OverflowPanel.js +0 -1
  347. package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
  348. package/lib/esm/components-react/toolbar/PopupItem.d.ts.map +1 -1
  349. package/lib/esm/components-react/toolbar/PopupItem.js +3 -6
  350. package/lib/esm/components-react/toolbar/PopupItem.js.map +1 -1
  351. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  352. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js +3 -13
  353. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  354. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  355. package/lib/esm/components-react/toolbar/PopupItemsPanel.js +1 -7
  356. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  357. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  358. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.js +0 -3
  359. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  360. package/lib/esm/components-react/toolbar/useDragInteraction.d.ts.map +1 -1
  361. package/lib/esm/components-react/toolbar/useDragInteraction.js +0 -2
  362. package/lib/esm/components-react/toolbar/useDragInteraction.js.map +1 -1
  363. package/lib/esm/components-react/tree/TreeDataProvider.d.ts.map +1 -1
  364. package/lib/esm/components-react/tree/TreeDataProvider.js +0 -1
  365. package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
  366. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.d.ts.map +1 -1
  367. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js +1 -8
  368. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  369. package/lib/esm/components-react/tree/controlled/TreeModel.d.ts.map +1 -1
  370. package/lib/esm/components-react/tree/controlled/TreeModel.js +0 -1
  371. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  372. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.d.ts.map +1 -1
  373. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +0 -4
  374. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  375. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
  376. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js +0 -5
  377. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  378. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.d.ts.map +1 -1
  379. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js +0 -1
  380. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  381. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.d.ts.map +1 -1
  382. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js +1 -10
  383. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  384. package/package.json +3 -5
@@ -1 +1 @@
1
- {"version":3,"file":"InternalToolbarComponent.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/InternalToolbarComponent.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 type {\n ActionButton,\n CommonToolbarItem,\n CustomButtonDefinition,\n GroupButton,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n ToolbarItemUtilities,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport { Badge, Icon, IconHelper } from \"@itwin/core-react\";\nimport { ToolbarButtonItem } from \"./Item\";\nimport { ToolbarItems } from \"./Items\";\nimport { ItemWrapper, useResizeObserverSingleDimension } from \"./ItemWrapper\";\nimport { ToolbarOverflowButton } from \"./Overflow\";\nimport { ToolbarOverflowPanel } from \"./OverflowPanel\";\nimport { PopupItem } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport { PopupItemWithDrag } from \"./PopupItemWithDrag\";\nimport {\n Direction,\n DirectionHelpers,\n OrthogonalDirection,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\nimport { SvgPlaceholder } from \"@itwin/itwinui-icons-react\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { useConditionalSynchedItems } from \"./useConditionalSynchedItems\";\nimport { useTranslation } from \"../useTranslation\";\n\n/** Describes the data needed to insert a custom `React` button into an ToolbarWithOverflow.\n * @public\n * @deprecated in 4.0. Use [ToolbarCustomItem]($appui-react) instead.\n */\nexport interface CustomToolbarItem extends CustomButtonDefinition {\n /** defines the content to display in popup panel */\n panelContentNode?: 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 keepContentsLoaded?: boolean;\n}\n\n/**\n * Context used by Toolbar items to know if popup panel should be hidden - via AutoHide.\n * @public\n */\nexport const ToolbarPopupAutoHideContext = React.createContext<boolean>(false);\n\n/**\n * React hook used to retrieve the ToolbarPopupAutoHideContext.\n * @public\n */\nexport function useToolbarPopupAutoHideContext() {\n return React.useContext(ToolbarPopupAutoHideContext);\n}\n\n/** Describes toolbar item.\n * @public\n * @deprecated in 4.0. Use [ToolbarItem]($appui-react) instead.\n */\nexport type ToolbarItem = ActionButton | GroupButton | CustomToolbarItem; // eslint-disable-line deprecation/deprecation\n\n/** CustomToolbarItem type guard.\n * @internal\n */\nexport function isCustomToolbarItem(\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem\n // eslint-disable-next-line deprecation/deprecation\n): item is CustomToolbarItem {\n return !!(item as CustomToolbarItem).isCustom && \"panelContentNode\" in item; // eslint-disable-line deprecation/deprecation\n}\n\n/** @internal */\nexport const getToolbarDirection = (\n expandsTo: Direction\n): OrthogonalDirection => {\n const orthogonalDirection =\n DirectionHelpers.getOrthogonalDirection(expandsTo);\n return OrthogonalDirectionHelpers.inverse(orthogonalDirection);\n};\n\n/** Available alignment modes of [[Toolbar]] panels.\n * @public\n */\nexport enum ToolbarPanelAlignment {\n Start,\n End,\n}\n\n/** Enumeration of Toolbar Opacity setting.\n * @public\n */\nexport enum ToolbarOpacitySetting {\n /** Use the default background, box-shadow opacity and backdrop-filter blur */\n Defaults,\n /** Alter the opacity from transparent to the defaults based on mouse proximity */\n Proximity,\n /** Use a transparent background, box-shadow opacity and backdrop-filter blur */\n Transparent,\n}\n\n/** Helpers for [[ToolbarPanelAlignment]].\n * @internal\n */\nexport class ToolbarPanelAlignmentHelpers {\n /** Class name of [[ToolbarPanelAlignment.Start]] */\n public static readonly START_CLASS_NAME = \"components-panel-alignment-start\";\n /** Class name of [[ToolbarPanelAlignment.End]] */\n public static readonly END_CLASS_NAME = \"components-panel-alignment-end\";\n\n /** @returns Class name of specified [[ToolbarPanelAlignment]] */\n public static getCssClassName(panelAlignment: ToolbarPanelAlignment): string {\n switch (panelAlignment) {\n case ToolbarPanelAlignment.Start:\n return ToolbarPanelAlignmentHelpers.START_CLASS_NAME;\n case ToolbarPanelAlignment.End:\n return ToolbarPanelAlignmentHelpers.END_CLASS_NAME;\n }\n }\n}\n\n/** @internal */\nexport interface ToolbarOverflowContextProps {\n readonly expandsTo: Direction;\n readonly direction: OrthogonalDirection;\n readonly overflowExpandsTo: Direction;\n readonly overflowDirection: OrthogonalDirection;\n readonly panelAlignment: ToolbarPanelAlignment;\n readonly useDragInteraction: boolean;\n readonly toolbarOpacitySetting: ToolbarOpacitySetting;\n readonly openPopupCount: number;\n readonly onPopupPanelOpenClose: (isOpening: boolean) => void;\n readonly overflowDisplayActive: boolean;\n readonly onItemExecuted: OnItemExecutedFunc;\n readonly onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n/**\n * Context used by Toolbar component to provide Direction to child components.\n * @internal\n */\nexport const ToolbarWithOverflowDirectionContext =\n React.createContext<ToolbarOverflowContextProps>({\n expandsTo: Direction.Bottom,\n direction: OrthogonalDirection.Horizontal,\n overflowExpandsTo: Direction.Right,\n overflowDirection: OrthogonalDirection.Vertical,\n panelAlignment: ToolbarPanelAlignment.Start,\n useDragInteraction: false,\n toolbarOpacitySetting: ToolbarOpacitySetting.Proximity,\n openPopupCount: 0,\n onPopupPanelOpenClose: /* istanbul ignore next */ (\n _isOpening: boolean\n ) => {},\n overflowDisplayActive: false,\n onItemExecuted: /* istanbul ignore next */ (_item: any) => void {},\n onKeyDown: /* istanbul ignore next */ (_e: React.KeyboardEvent) => void {},\n });\n\n/** @internal */\nfunction CustomItem({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: CustomToolbarItem;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const icon = React.useMemo(\n () =>\n (item.icon &&\n IconHelper.getIconReactNode(item.icon, item.internalData)) || (\n // istanbul ignore next\n <Icon className=\"icon\" iconSpec={<SvgPlaceholder />} />\n ),\n [item.icon, item.internalData]\n );\n const isDisabled = React.useMemo(\n () => ConditionalBooleanValue.getValue(item.isDisabled),\n [item.isDisabled]\n );\n const title = React.useMemo(\n () =>\n /* istanbul ignore next */ ConditionalStringValue.getValue(item.label) ??\n item.id,\n [item.id, item.label]\n );\n\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n icon={icon}\n isDisabled={isDisabled}\n title={title}\n panel={item.panelContentNode}\n hideIndicator={useDragInteraction}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n keepContentsMounted={item.keepContentsLoaded}\n />\n );\n}\n\n/** @internal */\nfunction GroupPopupItem({\n item,\n addGroupSeparator,\n}: {\n item: GroupButton;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const title = ConditionalStringValue.getValue(item.label)!;\n const panel = React.useMemo(\n () => <PopupItemsPanel groupItem={item} activateOnPointerUp={false} />,\n [item]\n );\n // istanbul ignore next\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n if (useDragInteraction) {\n return (\n <PopupItemWithDrag\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n groupItem={item}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n />\n );\n }\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n panel={panel}\n badge={<Badge type={item.badgeType} />}\n hideIndicator={useDragInteraction}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nfunction ActionItem({\n item,\n addGroupSeparator,\n}: {\n item: ActionButton;\n addGroupSeparator: boolean;\n}) {\n const title = ConditionalStringValue.getValue(item.label)!;\n const { onItemExecuted } = useToolbarWithOverflowDirectionContext();\n const onExecute = React.useCallback(() => {\n item.execute();\n onItemExecuted(item);\n }, [item, onItemExecuted]);\n\n // istanbul ignore next\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n return (\n <ToolbarButtonItem\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n key={item.id}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isActive={item.isActive}\n onClick={onExecute}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nexport function ToolbarItemComponent({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem;\n addGroupSeparator: boolean;\n}) {\n if (ToolbarItemUtilities.isGroupButton(item)) {\n return <GroupPopupItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else if (isCustomToolbarItem(item)) {\n return <CustomItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else {\n // istanbul ignore else\n if (ToolbarItemUtilities.isActionButton(item)) {\n return <ActionItem item={item} addGroupSeparator={addGroupSeparator} />;\n }\n }\n // istanbul ignore next\n return null;\n}\n\n/** @internal */\nexport function useToolbarWithOverflowDirectionContext() {\n return React.useContext(ToolbarWithOverflowDirectionContext);\n}\n\nfunction OverflowItemsContainer(p: { children: React.ReactNode }) {\n return <>{p.children}</>;\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 undefined;\n}\n\n/**\n * Recursively looks through all items and groups and removes the hidden items\n * from the working object.\n * @param items List of object to analyse\n * @returns Copy of the provided items, minus the hidden ones.\n */\nfunction filterHiddenItems<T extends CommonToolbarItem>(\n items: ReadonlyArray<T>\n): T[] {\n return items\n .filter((item) => !ConditionalBooleanValue.getValue(item.isHidden))\n .map((i) => {\n if (\"items\" in i) {\n return { ...i, items: filterHiddenItems(i.items) };\n }\n return i;\n });\n}\n\n/** Properties of [[ToolbarComponent]] component.\n * @internal\n */\nexport interface InternalToolbarComponentProps\n extends CommonProps,\n NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Describes if items that do not fit available space should move to an expandable panel. Defaults to: false */\n enableOverflow?:\n | boolean\n | {\n /** Describes to which direction the overflow popup panels are expanded if overflow is enabled. Defaults to: [[Direction.Right]] */\n overflowExpandsTo?: Direction;\n };\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 /** SyncEvents on which the conditional should listen to */\n syncUiEvent?: BeEvent<(args: { eventIds: Set<string> }) => void>;\n}\n\n/** Component that displays toolbar items.\n * @internal\n */\nexport function InternalToolbarComponent(props: InternalToolbarComponentProps) {\n const expandsTo = props.expandsTo ? props.expandsTo : Direction.Bottom;\n const useDragInteraction = !!props.useDragInteraction;\n const panelAlignment = props.panelAlignment\n ? props.panelAlignment\n : ToolbarPanelAlignment.Start;\n const useHeight =\n expandsTo === Direction.Right || expandsTo === Direction.Left;\n const { translate } = useTranslation();\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\n const isMounted = React.useRef(false);\n React.useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n });\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\n // use setTimeout to avoid warning about setting state in ToolbarWithOverflow from render method of PopupItem/PopupItemWithDrag\n setTimeout(() => {\n // istanbul ignore next\n if (!isMounted.current) return;\n setPopupPanelCount((prev) => {\n /* istanbul ignore next */\n const nextCount = isOpening ? prev + 1 : prev - 1;\n return nextCount < 0 ? /* istanbul ignore next */ 0 : nextCount;\n });\n });\n }, []);\n\n const width = React.useRef<number | undefined>(undefined);\n\n const eventSynchedItems = useConditionalSynchedItems(\n props.items,\n props.syncUiEvent\n );\n\n const availableNodes = React.useMemo<React.ReactNode>(() => {\n const filteredItems = filterHiddenItems(eventSynchedItems);\n return filteredItems.map((item, index) => {\n let addGroupSeparator = false;\n if (index > 0)\n addGroupSeparator =\n item.groupPriority !== filteredItems[index - 1].groupPriority;\n return (\n <ToolbarItemComponent\n key={item.id}\n item={item}\n addGroupSeparator={!!addGroupSeparator}\n />\n );\n });\n }, [eventSynchedItems]);\n /* overflowItemKeys - keys of items to show in overflow panel\n * handleContainerResize - handler called when container <div> is resized.\n * handleOverflowResize - handler called when determining size of overflow indicator/button.\n * handleEntryResize - handler called when determining size of each item/button. */\n const [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ] = useOverflow(availableNodes, panelAlignment === ToolbarPanelAlignment.End);\n // handler called by ResizeObserver\n const handleResize = React.useCallback(\n (w: number) => {\n width.current = w;\n width.current !== undefined && handleContainerResize(width.current);\n },\n [handleContainerResize]\n );\n const resizeObserverRef = useResizeObserverSingleDimension(\n handleResize,\n useHeight\n );\n const handleClick = React.useCallback(() => {\n setIsOverflowPanelOpen((prev) => !prev);\n }, []);\n // istanbul ignore next - NEEDSWORK add complete tests\n const handleClose = React.useCallback(() => {\n setIsOverflowPanelOpen(false);\n }, []);\n\n // Not setting the ref will disable overflow management, but will keep proper refresh of items.\n const ref = props.enableOverflow ? resizeObserverRef : undefined;\n const availableItems = React.Children.toArray(availableNodes);\n const displayedItems = availableItems.reduce<\n Array<[string, React.ReactNode]>\n >((acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflowItemKeys || overflowItemKeys.indexOf(key) < 0) {\n acc.push([key, child]);\n }\n return acc;\n }, []);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const overflowPanelItems = overflowItemKeys\n ? availableItems.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (overflowItemKeys.indexOf(key) >= 0) {\n acc.push([key, child]);\n }\n return acc;\n },\n []\n )\n : [];\n\n const direction = getToolbarDirection(expandsTo);\n const overflowExpandsTo =\n (typeof props.enableOverflow !== \"boolean\" &&\n props.enableOverflow?.overflowExpandsTo) ||\n Direction.Right;\n const addOverflowButton = React.useCallback(\n (atStart: boolean) => {\n const overflowItems = !!atStart\n ? overflowPanelItems.reverse()\n : overflowPanelItems;\n return (\n <ToolbarItemContext.Provider\n value={{\n hasOverflow: false,\n useHeight,\n onResize: handleOverflowResize,\n }}\n >\n <ToolbarOverflowButton\n expandsTo={expandsTo}\n onClick={handleClick}\n onClose={handleClose}\n open={overflowItems.length > 0 && isOverflowPanelOpen}\n panelNode={\n <ToolbarOverflowPanel>\n <OverflowItemsContainer>\n {overflowItems.map(([key, child]) => {\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: true,\n useHeight,\n onResize: () => {},\n }}\n >\n {\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n }\n </ToolbarItemContext.Provider>\n );\n })}\n </OverflowItemsContainer>\n </ToolbarOverflowPanel>\n }\n title={translate(\"toolbar.overflow\")}\n />\n </ToolbarItemContext.Provider>\n );\n },\n [\n overflowPanelItems,\n useHeight,\n handleOverflowResize,\n expandsTo,\n handleClick,\n handleClose,\n isOverflowPanelOpen,\n translate,\n ]\n );\n\n const className = classnames(\n \"components-toolbar-overflow-sizer\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n props.className\n );\n\n const showOverflowAtStart =\n direction === OrthogonalDirection.Horizontal &&\n panelAlignment === ToolbarPanelAlignment.End;\n /* The ItemWrapper is used to wrap the <Item> <ExpandableItem> with a <div> that specifies a ref that the sizing logic uses to determine the\n size of the item. */\n return (\n <ToolbarWithOverflowDirectionContext.Provider\n value={{\n expandsTo,\n direction,\n overflowExpandsTo,\n panelAlignment,\n useDragInteraction,\n toolbarOpacitySetting:\n props.toolbarOpacitySetting ?? ToolbarOpacitySetting.Proximity,\n overflowDirection:\n direction === OrthogonalDirection.Horizontal\n ? OrthogonalDirection.Vertical\n : OrthogonalDirection.Horizontal,\n openPopupCount: popupPanelCount,\n onPopupPanelOpenClose: handlePopupPanelOpenClose,\n overflowDisplayActive:\n overflowPanelItems.length > 0 && isOverflowPanelOpen,\n onItemExecuted: props.onItemExecuted ? props.onItemExecuted : () => {},\n onKeyDown: props.onKeyDown\n ? props.onKeyDown\n : /* istanbul ignore next */ (_e: React.KeyboardEvent) => {},\n }}\n >\n {availableItems.length > 0 && (\n <div\n className={className}\n ref={ref}\n style={props.style}\n onKeyDown={props.onKeyDown}\n role=\"presentation\"\n >\n <ToolbarItems className=\"components-items\" direction={direction}>\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n showOverflowAtStart &&\n addOverflowButton(true)}\n {displayedItems.map(([key, child]) => {\n const onEntryResize = handleEntryResize(key);\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: false,\n useHeight,\n onResize: onEntryResize,\n }}\n >\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n </ToolbarItemContext.Provider>\n );\n })}\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n !showOverflowAtStart &&\n addOverflowButton(false)}\n </ToolbarItems>\n </div>\n )}\n </ToolbarWithOverflowDirectionContext.Provider>\n );\n}\n\n/** Returns key of a child. Must be used along with React.Children.toArray to preserve the semantics of availableItems.\n * @internal\n */\nfunction getChildKey(child: React.ReactNode, index: number) {\n // istanbul ignore else\n if (React.isValidElement(child) && child.key !== null) {\n return child.key.toString();\n }\n // istanbul ignore next\n return index.toString();\n}\n\n/** Returns a subset of toolbar item entry keys that exceed given width and should be overflowItemKeys.\n * @internal\n */\nfunction determineOverflowItems(\n size: number,\n entries: ReadonlyArray<readonly [string, number]>,\n overflowButtonSize: number,\n overflowButtonAtStart: boolean\n): string[] {\n let toolbarSize = 0;\n const buttonPadding = 2;\n if (overflowButtonAtStart && entries.length > 0) {\n let i = entries.length - 1;\n for (; i >= 0; i--) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n if (i >= 0) {\n let j = i + 1;\n for (; j < entries.length; j++) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(0, j).map((e) => e[0]);\n } else {\n return [];\n }\n } else {\n let i = 0;\n for (; i < entries.length; i++) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n let j = i;\n for (; j > 0; j--) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(j).map((e) => e[0]);\n }\n}\n\n/** Hook that returns a list of overflowItemKeys availableItems.\n * @internal\n */\nfunction useOverflow(\n availableItems: React.ReactNode,\n overflowButtonAtStart: boolean\n): [\n ReadonlyArray<string> | undefined,\n (size: number) => void,\n (size: number) => void,\n (key: string) => (size: number) => void\n] {\n const [overflowItemKeys, setOverflown] =\n React.useState<ReadonlyArray<string>>();\n const itemSizes = React.useRef(new Map<string, number | undefined>());\n const size = React.useRef<number | undefined>(undefined);\n const overflowButtonSize = React.useRef<number | undefined>(undefined);\n\n const calculateOverflow = React.useCallback(() => {\n const sizes = verifiedMapEntries(itemSizes.current);\n if (\n size.current === undefined ||\n sizes === undefined ||\n overflowButtonSize.current === undefined\n ) {\n setOverflown(undefined);\n return;\n }\n\n // Calculate overflow.\n const newOverflown = determineOverflowItems(\n size.current,\n [...sizes.entries()],\n overflowButtonSize.current,\n overflowButtonAtStart\n );\n setOverflown((prevOverflown) => {\n return eql(prevOverflown, newOverflown) ? prevOverflown : newOverflown;\n });\n }, [overflowButtonAtStart]);\n\n React.useLayoutEffect(() => {\n const newEntryWidths = new Map<string, number | undefined>();\n const array = React.Children.toArray(availableItems);\n for (let i = 0; i < array.length; i++) {\n const child = array[i];\n const key = getChildKey(child, i);\n const lastW = itemSizes.current.get(key);\n newEntryWidths.set(key, lastW);\n }\n itemSizes.current = newEntryWidths;\n calculateOverflow();\n }, [availableItems, calculateOverflow]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n const calculate = size.current !== w;\n size.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowButtonSize.current !== w;\n overflowButtonSize.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = itemSizes.current.get(key);\n if (oldW !== w) {\n itemSizes.current.set(key, w);\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n return [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ];\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport interface ToolbarItemContextArgs {\n readonly hasOverflow: boolean;\n readonly useHeight: boolean;\n readonly onResize: (w: number) => void;\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport const ToolbarItemContext = React.createContext<ToolbarItemContextArgs>({\n hasOverflow: false,\n useHeight: false,\n onResize: () => {\n // intentionally do nothing by default.\n },\n});\n\n/** @internal */\nexport function useToolItemEntryContext() {\n return React.useContext(ToolbarItemContext);\n}\n\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n // istanbul ignore next during unit testing\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\nfunction eql(prev: readonly string[] | undefined, value: readonly string[]) {\n if (!prev) return false;\n // istanbul ignore next\n if (prev.length !== value.length) return false;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const v = value[i];\n // istanbul ignore next\n if (p !== v) return false;\n }\n return true;\n}\n"]}
1
+ {"version":3,"file":"InternalToolbarComponent.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/InternalToolbarComponent.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 type {\n ActionButton,\n CommonToolbarItem,\n CustomButtonDefinition,\n GroupButton,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n ToolbarItemUtilities,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport { Badge, Icon, IconHelper } from \"@itwin/core-react\";\nimport { ToolbarButtonItem } from \"./Item\";\nimport { ToolbarItems } from \"./Items\";\nimport { ItemWrapper, useResizeObserverSingleDimension } from \"./ItemWrapper\";\nimport { ToolbarOverflowButton } from \"./Overflow\";\nimport { ToolbarOverflowPanel } from \"./OverflowPanel\";\nimport { PopupItem } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport { PopupItemWithDrag } from \"./PopupItemWithDrag\";\nimport {\n Direction,\n DirectionHelpers,\n OrthogonalDirection,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\nimport { SvgPlaceholder } from \"@itwin/itwinui-icons-react\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { useConditionalSynchedItems } from \"./useConditionalSynchedItems\";\nimport { useTranslation } from \"../useTranslation\";\n\n/** Describes the data needed to insert a custom `React` button into an ToolbarWithOverflow.\n * @public\n * @deprecated in 4.0. Use [ToolbarCustomItem]($appui-react) instead.\n */\nexport interface CustomToolbarItem extends CustomButtonDefinition {\n /** defines the content to display in popup panel */\n panelContentNode?: 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 keepContentsLoaded?: boolean;\n}\n\n/**\n * Context used by Toolbar items to know if popup panel should be hidden - via AutoHide.\n * @public\n */\nexport const ToolbarPopupAutoHideContext = React.createContext<boolean>(false);\n\n/**\n * React hook used to retrieve the ToolbarPopupAutoHideContext.\n * @public\n */\nexport function useToolbarPopupAutoHideContext() {\n return React.useContext(ToolbarPopupAutoHideContext);\n}\n\n/** Describes toolbar item.\n * @public\n * @deprecated in 4.0. Use [ToolbarItem]($appui-react) instead.\n */\nexport type ToolbarItem = ActionButton | GroupButton | CustomToolbarItem; // eslint-disable-line deprecation/deprecation\n\n/** CustomToolbarItem type guard.\n * @internal\n */\nexport function isCustomToolbarItem(\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem\n // eslint-disable-next-line deprecation/deprecation\n): item is CustomToolbarItem {\n return !!(item as CustomToolbarItem).isCustom && \"panelContentNode\" in item; // eslint-disable-line deprecation/deprecation\n}\n\n/** @internal */\nexport const getToolbarDirection = (\n expandsTo: Direction\n): OrthogonalDirection => {\n const orthogonalDirection =\n DirectionHelpers.getOrthogonalDirection(expandsTo);\n return OrthogonalDirectionHelpers.inverse(orthogonalDirection);\n};\n\n/** Available alignment modes of [[Toolbar]] panels.\n * @public\n */\nexport enum ToolbarPanelAlignment {\n Start,\n End,\n}\n\n/** Enumeration of Toolbar Opacity setting.\n * @public\n */\nexport enum ToolbarOpacitySetting {\n /** Use the default background, box-shadow opacity and backdrop-filter blur */\n Defaults,\n /** Alter the opacity from transparent to the defaults based on mouse proximity */\n Proximity,\n /** Use a transparent background, box-shadow opacity and backdrop-filter blur */\n Transparent,\n}\n\n/** Helpers for [[ToolbarPanelAlignment]].\n * @internal\n */\nexport class ToolbarPanelAlignmentHelpers {\n /** Class name of [[ToolbarPanelAlignment.Start]] */\n public static readonly START_CLASS_NAME = \"components-panel-alignment-start\";\n /** Class name of [[ToolbarPanelAlignment.End]] */\n public static readonly END_CLASS_NAME = \"components-panel-alignment-end\";\n\n /** @returns Class name of specified [[ToolbarPanelAlignment]] */\n public static getCssClassName(panelAlignment: ToolbarPanelAlignment): string {\n switch (panelAlignment) {\n case ToolbarPanelAlignment.Start:\n return ToolbarPanelAlignmentHelpers.START_CLASS_NAME;\n case ToolbarPanelAlignment.End:\n return ToolbarPanelAlignmentHelpers.END_CLASS_NAME;\n }\n }\n}\n\n/** @internal */\nexport interface ToolbarOverflowContextProps {\n readonly expandsTo: Direction;\n readonly direction: OrthogonalDirection;\n readonly overflowExpandsTo: Direction;\n readonly overflowDirection: OrthogonalDirection;\n readonly panelAlignment: ToolbarPanelAlignment;\n readonly useDragInteraction: boolean;\n readonly toolbarOpacitySetting: ToolbarOpacitySetting;\n readonly openPopupCount: number;\n readonly onPopupPanelOpenClose: (isOpening: boolean) => void;\n readonly overflowDisplayActive: boolean;\n readonly onItemExecuted: OnItemExecutedFunc;\n readonly onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n/**\n * Context used by Toolbar component to provide Direction to child components.\n * @internal\n */\nexport const ToolbarWithOverflowDirectionContext =\n React.createContext<ToolbarOverflowContextProps>({\n expandsTo: Direction.Bottom,\n direction: OrthogonalDirection.Horizontal,\n overflowExpandsTo: Direction.Right,\n overflowDirection: OrthogonalDirection.Vertical,\n panelAlignment: ToolbarPanelAlignment.Start,\n useDragInteraction: false,\n toolbarOpacitySetting: ToolbarOpacitySetting.Proximity,\n openPopupCount: 0,\n onPopupPanelOpenClose: (_isOpening: boolean) => {},\n overflowDisplayActive: false,\n onItemExecuted: (_item: any) => void {},\n onKeyDown: (_e: React.KeyboardEvent) => void {},\n });\n\n/** @internal */\nfunction CustomItem({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: CustomToolbarItem;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const icon = React.useMemo(\n () =>\n (item.icon &&\n IconHelper.getIconReactNode(item.icon, item.internalData)) || (\n <Icon className=\"icon\" iconSpec={<SvgPlaceholder />} />\n ),\n [item.icon, item.internalData]\n );\n const isDisabled = React.useMemo(\n () => ConditionalBooleanValue.getValue(item.isDisabled),\n [item.isDisabled]\n );\n const title = React.useMemo(\n () => ConditionalStringValue.getValue(item.label) ?? item.id,\n [item.id, item.label]\n );\n\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n icon={icon}\n isDisabled={isDisabled}\n title={title}\n panel={item.panelContentNode}\n hideIndicator={useDragInteraction}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n keepContentsMounted={item.keepContentsLoaded}\n />\n );\n}\n\n/** @internal */\nfunction GroupPopupItem({\n item,\n addGroupSeparator,\n}: {\n item: GroupButton;\n addGroupSeparator: boolean;\n}) {\n const { useDragInteraction } = useToolbarWithOverflowDirectionContext();\n const title = ConditionalStringValue.getValue(item.label)!;\n const panel = React.useMemo(\n () => <PopupItemsPanel groupItem={item} activateOnPointerUp={false} />,\n [item]\n );\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n if (useDragInteraction) {\n return (\n <PopupItemWithDrag\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n groupItem={item}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n />\n );\n }\n return (\n <PopupItem\n key={item.id}\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n panel={panel}\n badge={<Badge type={item.badgeType} />}\n hideIndicator={useDragInteraction}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nfunction ActionItem({\n item,\n addGroupSeparator,\n}: {\n item: ActionButton;\n addGroupSeparator: boolean;\n}) {\n const title = ConditionalStringValue.getValue(item.label)!;\n const { onItemExecuted } = useToolbarWithOverflowDirectionContext();\n const onExecute = React.useCallback(() => {\n item.execute();\n onItemExecuted(item);\n }, [item, onItemExecuted]);\n\n const providerId =\n \"providerId\" in item ? (item.providerId as string) : undefined;\n return (\n <ToolbarButtonItem\n itemId={item.id}\n providerId={providerId}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n key={item.id}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n title={title}\n icon={IconHelper.getIconReactNode(item.icon, item.internalData)}\n isActive={item.isActive}\n onClick={onExecute}\n badge={<Badge type={item.badgeType} />}\n addGroupSeparator={addGroupSeparator}\n />\n );\n}\n\n/** @internal */\nexport function ToolbarItemComponent({\n item,\n addGroupSeparator,\n}: {\n // eslint-disable-next-line deprecation/deprecation\n item: ToolbarItem;\n addGroupSeparator: boolean;\n}) {\n if (ToolbarItemUtilities.isGroupButton(item)) {\n return <GroupPopupItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else if (isCustomToolbarItem(item)) {\n return <CustomItem item={item} addGroupSeparator={addGroupSeparator} />;\n } else {\n if (ToolbarItemUtilities.isActionButton(item)) {\n return <ActionItem item={item} addGroupSeparator={addGroupSeparator} />;\n }\n }\n return null;\n}\n\n/** @internal */\nexport function useToolbarWithOverflowDirectionContext() {\n return React.useContext(ToolbarWithOverflowDirectionContext);\n}\n\nfunction OverflowItemsContainer(p: { children: React.ReactNode }) {\n return <>{p.children}</>;\n}\n\nfunction getItemWrapperClass(child: React.ReactNode) {\n if (React.isValidElement(child)) {\n if (child.props && child.props.addGroupSeparator)\n return \"components-toolbar-button-add-gap-before\";\n }\n return undefined;\n}\n\n/**\n * Recursively looks through all items and groups and removes the hidden items\n * from the working object.\n * @param items List of object to analyse\n * @returns Copy of the provided items, minus the hidden ones.\n */\nfunction filterHiddenItems<T extends CommonToolbarItem>(\n items: ReadonlyArray<T>\n): T[] {\n return items\n .filter((item) => !ConditionalBooleanValue.getValue(item.isHidden))\n .map((i) => {\n if (\"items\" in i) {\n return { ...i, items: filterHiddenItems(i.items) };\n }\n return i;\n });\n}\n\n/** Properties of [[ToolbarComponent]] component.\n * @internal\n */\nexport interface InternalToolbarComponentProps\n extends CommonProps,\n NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Describes if items that do not fit available space should move to an expandable panel. Defaults to: false */\n enableOverflow?:\n | boolean\n | {\n /** Describes to which direction the overflow popup panels are expanded if overflow is enabled. Defaults to: [[Direction.Right]] */\n overflowExpandsTo?: Direction;\n };\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 /** SyncEvents on which the conditional should listen to */\n syncUiEvent?: BeEvent<(args: { eventIds: Set<string> }) => void>;\n}\n\n/** Component that displays toolbar items.\n * @internal\n */\nexport function InternalToolbarComponent(props: InternalToolbarComponentProps) {\n const expandsTo = props.expandsTo ? props.expandsTo : Direction.Bottom;\n const useDragInteraction = !!props.useDragInteraction;\n const panelAlignment = props.panelAlignment\n ? props.panelAlignment\n : ToolbarPanelAlignment.Start;\n const useHeight =\n expandsTo === Direction.Right || expandsTo === Direction.Left;\n const { translate } = useTranslation();\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\n const [popupPanelCount, setPopupPanelCount] = React.useState(0);\n const isMounted = React.useRef(false);\n React.useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n });\n const handlePopupPanelOpenClose = React.useCallback((isOpening: boolean) => {\n // use setTimeout to avoid warning about setting state in ToolbarWithOverflow from render method of PopupItem/PopupItemWithDrag\n setTimeout(() => {\n if (!isMounted.current) return;\n setPopupPanelCount((prev) => {\n const nextCount = isOpening ? prev + 1 : prev - 1;\n return nextCount < 0 ? 0 : nextCount;\n });\n });\n }, []);\n\n const width = React.useRef<number | undefined>(undefined);\n\n const eventSynchedItems = useConditionalSynchedItems(\n props.items,\n props.syncUiEvent\n );\n\n const availableNodes = React.useMemo<React.ReactNode>(() => {\n const filteredItems = filterHiddenItems(eventSynchedItems);\n return filteredItems.map((item, index) => {\n let addGroupSeparator = false;\n if (index > 0)\n addGroupSeparator =\n item.groupPriority !== filteredItems[index - 1].groupPriority;\n return (\n <ToolbarItemComponent\n key={item.id}\n item={item}\n addGroupSeparator={!!addGroupSeparator}\n />\n );\n });\n }, [eventSynchedItems]);\n /* overflowItemKeys - keys of items to show in overflow panel\n * handleContainerResize - handler called when container <div> is resized.\n * handleOverflowResize - handler called when determining size of overflow indicator/button.\n * handleEntryResize - handler called when determining size of each item/button. */\n const [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ] = useOverflow(availableNodes, panelAlignment === ToolbarPanelAlignment.End);\n // handler called by ResizeObserver\n const handleResize = React.useCallback(\n (w: number) => {\n width.current = w;\n width.current !== undefined && handleContainerResize(width.current);\n },\n [handleContainerResize]\n );\n const resizeObserverRef = useResizeObserverSingleDimension(\n handleResize,\n useHeight\n );\n const handleClick = React.useCallback(() => {\n setIsOverflowPanelOpen((prev) => !prev);\n }, []);\n const handleClose = React.useCallback(() => {\n setIsOverflowPanelOpen(false);\n }, []);\n\n // Not setting the ref will disable overflow management, but will keep proper refresh of items.\n const ref = props.enableOverflow ? resizeObserverRef : undefined;\n const availableItems = React.Children.toArray(availableNodes);\n const displayedItems = availableItems.reduce<\n Array<[string, React.ReactNode]>\n >((acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflowItemKeys || overflowItemKeys.indexOf(key) < 0) {\n acc.push([key, child]);\n }\n return acc;\n }, []);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const overflowPanelItems = overflowItemKeys\n ? availableItems.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (overflowItemKeys.indexOf(key) >= 0) {\n acc.push([key, child]);\n }\n return acc;\n },\n []\n )\n : [];\n\n const direction = getToolbarDirection(expandsTo);\n const overflowExpandsTo =\n (typeof props.enableOverflow !== \"boolean\" &&\n props.enableOverflow?.overflowExpandsTo) ||\n Direction.Right;\n const addOverflowButton = React.useCallback(\n (atStart: boolean) => {\n const overflowItems = !!atStart\n ? overflowPanelItems.reverse()\n : overflowPanelItems;\n return (\n <ToolbarItemContext.Provider\n value={{\n hasOverflow: false,\n useHeight,\n onResize: handleOverflowResize,\n }}\n >\n <ToolbarOverflowButton\n expandsTo={expandsTo}\n onClick={handleClick}\n onClose={handleClose}\n open={overflowItems.length > 0 && isOverflowPanelOpen}\n panelNode={\n <ToolbarOverflowPanel>\n <OverflowItemsContainer>\n {overflowItems.map(([key, child]) => {\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: true,\n useHeight,\n onResize: () => {},\n }}\n >\n {\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n }\n </ToolbarItemContext.Provider>\n );\n })}\n </OverflowItemsContainer>\n </ToolbarOverflowPanel>\n }\n title={translate(\"toolbar.overflow\")}\n />\n </ToolbarItemContext.Provider>\n );\n },\n [\n overflowPanelItems,\n useHeight,\n handleOverflowResize,\n expandsTo,\n handleClick,\n handleClose,\n isOverflowPanelOpen,\n translate,\n ]\n );\n\n const className = classnames(\n \"components-toolbar-overflow-sizer\",\n OrthogonalDirectionHelpers.getCssClassName(direction),\n props.className\n );\n\n const showOverflowAtStart =\n direction === OrthogonalDirection.Horizontal &&\n panelAlignment === ToolbarPanelAlignment.End;\n /* The ItemWrapper is used to wrap the <Item> <ExpandableItem> with a <div> that specifies a ref that the sizing logic uses to determine the\n size of the item. */\n return (\n <ToolbarWithOverflowDirectionContext.Provider\n value={{\n expandsTo,\n direction,\n overflowExpandsTo,\n panelAlignment,\n useDragInteraction,\n toolbarOpacitySetting:\n props.toolbarOpacitySetting ?? ToolbarOpacitySetting.Proximity,\n overflowDirection:\n direction === OrthogonalDirection.Horizontal\n ? OrthogonalDirection.Vertical\n : OrthogonalDirection.Horizontal,\n openPopupCount: popupPanelCount,\n onPopupPanelOpenClose: handlePopupPanelOpenClose,\n overflowDisplayActive:\n overflowPanelItems.length > 0 && isOverflowPanelOpen,\n onItemExecuted: props.onItemExecuted ? props.onItemExecuted : () => {},\n onKeyDown: props.onKeyDown\n ? props.onKeyDown\n : (_e: React.KeyboardEvent) => {},\n }}\n >\n {availableItems.length > 0 && (\n <div\n className={className}\n ref={ref}\n style={props.style}\n onKeyDown={props.onKeyDown}\n role=\"presentation\"\n >\n <ToolbarItems className=\"components-items\" direction={direction}>\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n showOverflowAtStart &&\n addOverflowButton(true)}\n {displayedItems.map(([key, child]) => {\n const onEntryResize = handleEntryResize(key);\n return (\n <ToolbarItemContext.Provider\n key={key}\n value={{\n hasOverflow: false,\n useHeight,\n onResize: onEntryResize,\n }}\n >\n <ItemWrapper className={getItemWrapperClass(child)}>\n {child}\n </ItemWrapper>\n </ToolbarItemContext.Provider>\n );\n })}\n {props.enableOverflow &&\n (!overflowItemKeys || overflowItemKeys.length > 0) &&\n !showOverflowAtStart &&\n addOverflowButton(false)}\n </ToolbarItems>\n </div>\n )}\n </ToolbarWithOverflowDirectionContext.Provider>\n );\n}\n\n/** Returns key of a child. Must be used along with React.Children.toArray to preserve the semantics of availableItems.\n * @internal\n */\nfunction getChildKey(child: React.ReactNode, index: number) {\n if (React.isValidElement(child) && child.key !== null) {\n return child.key.toString();\n }\n return index.toString();\n}\n\n/** Returns a subset of toolbar item entry keys that exceed given width and should be overflowItemKeys.\n * @internal\n */\nfunction determineOverflowItems(\n size: number,\n entries: ReadonlyArray<readonly [string, number]>,\n overflowButtonSize: number,\n overflowButtonAtStart: boolean\n): string[] {\n let toolbarSize = 0;\n const buttonPadding = 2;\n if (overflowButtonAtStart && entries.length > 0) {\n let i = entries.length - 1;\n for (; i >= 0; i--) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n if (i >= 0) {\n let j = i + 1;\n for (; j < entries.length; j++) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(0, j).map((e) => e[0]);\n } else {\n return [];\n }\n } else {\n let i = 0;\n for (; i < entries.length; i++) {\n const w = entries[i][1] + buttonPadding;\n const newSettingsWidth = toolbarSize + w;\n if (newSettingsWidth > size) {\n toolbarSize += overflowButtonSize + buttonPadding;\n break;\n }\n toolbarSize = newSettingsWidth;\n }\n let j = i;\n for (; j > 0; j--) {\n if (toolbarSize <= size) break;\n const w = entries[j][1] + buttonPadding;\n toolbarSize -= w;\n }\n\n return entries.slice(j).map((e) => e[0]);\n }\n}\n\n/** Hook that returns a list of overflowItemKeys availableItems.\n * @internal\n */\nfunction useOverflow(\n availableItems: React.ReactNode,\n overflowButtonAtStart: boolean\n): [\n ReadonlyArray<string> | undefined,\n (size: number) => void,\n (size: number) => void,\n (key: string) => (size: number) => void\n] {\n const [overflowItemKeys, setOverflown] =\n React.useState<ReadonlyArray<string>>();\n const itemSizes = React.useRef(new Map<string, number | undefined>());\n const size = React.useRef<number | undefined>(undefined);\n const overflowButtonSize = React.useRef<number | undefined>(undefined);\n\n const calculateOverflow = React.useCallback(() => {\n const sizes = verifiedMapEntries(itemSizes.current);\n if (\n size.current === undefined ||\n sizes === undefined ||\n overflowButtonSize.current === undefined\n ) {\n setOverflown(undefined);\n return;\n }\n\n // Calculate overflow.\n const newOverflown = determineOverflowItems(\n size.current,\n [...sizes.entries()],\n overflowButtonSize.current,\n overflowButtonAtStart\n );\n setOverflown((prevOverflown) => {\n return eql(prevOverflown, newOverflown) ? prevOverflown : newOverflown;\n });\n }, [overflowButtonAtStart]);\n\n React.useLayoutEffect(() => {\n const newEntryWidths = new Map<string, number | undefined>();\n const array = React.Children.toArray(availableItems);\n for (let i = 0; i < array.length; i++) {\n const child = array[i];\n const key = getChildKey(child, i);\n const lastW = itemSizes.current.get(key);\n newEntryWidths.set(key, lastW);\n }\n itemSizes.current = newEntryWidths;\n calculateOverflow();\n }, [availableItems, calculateOverflow]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n const calculate = size.current !== w;\n size.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowButtonSize.current !== w;\n overflowButtonSize.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = itemSizes.current.get(key);\n if (oldW !== w) {\n itemSizes.current.set(key, w);\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n return [\n overflowItemKeys,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n ];\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport interface ToolbarItemContextArgs {\n readonly hasOverflow: boolean;\n readonly useHeight: boolean;\n readonly onResize: (w: number) => void;\n}\n\n/** Interface toolbars use to define context for its items.\n * @internal\n */\nexport const ToolbarItemContext = React.createContext<ToolbarItemContextArgs>({\n hasOverflow: false,\n useHeight: false,\n onResize: () => {\n // intentionally do nothing by default.\n },\n});\n\n/** @internal */\nexport function useToolItemEntryContext() {\n return React.useContext(ToolbarItemContext);\n}\n\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\nfunction eql(prev: readonly string[] | undefined, value: readonly string[]) {\n if (!prev) return false;\n if (prev.length !== value.length) return false;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const v = value[i];\n if (p !== v) return false;\n }\n return true;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Items.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Items.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,cAAc,CAAC;AAEtB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAiEpD"}
1
+ {"version":3,"file":"Items.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Items.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,cAAc,CAAC;AAEtB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBA+DpD"}
@@ -31,7 +31,6 @@ export function ToolbarItems(props) {
31
31
  const isInitialMount = React.useRef(true);
32
32
  const { onElementRef, proximityScale } = useWidgetOpacityContext();
33
33
  React.useEffect(() => {
34
- // istanbul ignore else
35
34
  if (isInitialMount.current) {
36
35
  isInitialMount.current = false;
37
36
  onElementRef(ref);
@@ -43,7 +42,6 @@ export function ToolbarItems(props) {
43
42
  toolbarOpacity = calculateToolbarOpacity(proximityScale);
44
43
  boxShadowOpacity = calculateBoxShadowOpacity(proximityScale);
45
44
  filterBlur = calculateBackdropFilterBlur(proximityScale);
46
- // istanbul ignore next
47
45
  if (proximityScale < 0.25)
48
46
  showSeparators = false;
49
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Items.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Items.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 \"./Items.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n calculateBackdropFilterBlur,\n calculateBoxShadowOpacity,\n calculateToolbarOpacity,\n getToolbarBackdropFilter,\n getToolbarBackgroundColor,\n getToolbarBoxShadow,\n TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT,\n TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT,\n useWidgetOpacityContext,\n} from \"@itwin/core-react\";\nimport {\n ToolbarOpacitySetting,\n useToolbarWithOverflowDirectionContext,\n} from \"./InternalToolbarComponent\";\nimport type { OrthogonalDirection } from \"./utilities/Direction\";\nimport { OrthogonalDirectionHelpers } from \"./utilities/Direction\";\n\n/** Properties of [[ToolbarItems]] component.\n * @internal\n */\nexport interface ToolbarItemsProps extends CommonProps {\n /** Toolbar items. */\n children?: React.ReactNode;\n /** Toolbar items direction. */\n direction: OrthogonalDirection;\n}\n\n/** Toolbar items container. Used in [[ToolbarWithOverflow]] component.\n * @internal\n */\nexport function ToolbarItems(props: ToolbarItemsProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const { toolbarOpacitySetting, openPopupCount, overflowDisplayActive } =\n useToolbarWithOverflowDirectionContext();\n const useTransparentBackground =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent;\n\n let toolbarOpacity = useTransparentBackground\n ? 0\n : Number(\n document.documentElement.style.getPropertyValue(\n \"--buic-toolbar-opacity\"\n )\n );\n let boxShadowOpacity = useTransparentBackground\n ? 0\n : TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT;\n let filterBlur = useTransparentBackground\n ? 0\n : TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;\n let showSeparators =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent ? false : true;\n\n const isInitialMount = React.useRef(true);\n const { onElementRef, proximityScale } = useWidgetOpacityContext();\n\n React.useEffect(() => {\n // istanbul ignore else\n if (isInitialMount.current) {\n isInitialMount.current = false;\n onElementRef(ref);\n }\n }, [onElementRef]);\n\n if (\n toolbarOpacitySetting === ToolbarOpacitySetting.Proximity &&\n openPopupCount < 1 &&\n !overflowDisplayActive\n ) {\n toolbarOpacity = calculateToolbarOpacity(proximityScale);\n boxShadowOpacity = calculateBoxShadowOpacity(proximityScale);\n filterBlur = calculateBackdropFilterBlur(proximityScale);\n // istanbul ignore next\n if (proximityScale < 0.25) showSeparators = false;\n }\n\n const divStyle: React.CSSProperties = {\n backgroundColor: getToolbarBackgroundColor(toolbarOpacity),\n boxShadow: getToolbarBoxShadow(boxShadowOpacity),\n backdropFilter: getToolbarBackdropFilter(filterBlur),\n ...props.style,\n };\n\n const className = classnames(\n \"components-toolbar-items-container\",\n OrthogonalDirectionHelpers.getCssClassName(props.direction),\n showSeparators && \"components-toolbar-show-decorators\",\n props.className\n );\n\n return (\n <div className={className} style={divStyle} ref={ref}>\n {props.children}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"Items.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/Items.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 \"./Items.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n calculateBackdropFilterBlur,\n calculateBoxShadowOpacity,\n calculateToolbarOpacity,\n getToolbarBackdropFilter,\n getToolbarBackgroundColor,\n getToolbarBoxShadow,\n TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT,\n TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT,\n useWidgetOpacityContext,\n} from \"@itwin/core-react\";\nimport {\n ToolbarOpacitySetting,\n useToolbarWithOverflowDirectionContext,\n} from \"./InternalToolbarComponent\";\nimport type { OrthogonalDirection } from \"./utilities/Direction\";\nimport { OrthogonalDirectionHelpers } from \"./utilities/Direction\";\n\n/** Properties of [[ToolbarItems]] component.\n * @internal\n */\nexport interface ToolbarItemsProps extends CommonProps {\n /** Toolbar items. */\n children?: React.ReactNode;\n /** Toolbar items direction. */\n direction: OrthogonalDirection;\n}\n\n/** Toolbar items container. Used in [[ToolbarWithOverflow]] component.\n * @internal\n */\nexport function ToolbarItems(props: ToolbarItemsProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const { toolbarOpacitySetting, openPopupCount, overflowDisplayActive } =\n useToolbarWithOverflowDirectionContext();\n const useTransparentBackground =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent;\n\n let toolbarOpacity = useTransparentBackground\n ? 0\n : Number(\n document.documentElement.style.getPropertyValue(\n \"--buic-toolbar-opacity\"\n )\n );\n let boxShadowOpacity = useTransparentBackground\n ? 0\n : TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT;\n let filterBlur = useTransparentBackground\n ? 0\n : TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;\n let showSeparators =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent ? false : true;\n\n const isInitialMount = React.useRef(true);\n const { onElementRef, proximityScale } = useWidgetOpacityContext();\n\n React.useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n onElementRef(ref);\n }\n }, [onElementRef]);\n\n if (\n toolbarOpacitySetting === ToolbarOpacitySetting.Proximity &&\n openPopupCount < 1 &&\n !overflowDisplayActive\n ) {\n toolbarOpacity = calculateToolbarOpacity(proximityScale);\n boxShadowOpacity = calculateBoxShadowOpacity(proximityScale);\n filterBlur = calculateBackdropFilterBlur(proximityScale);\n if (proximityScale < 0.25) showSeparators = false;\n }\n\n const divStyle: React.CSSProperties = {\n backgroundColor: getToolbarBackgroundColor(toolbarOpacity),\n boxShadow: getToolbarBoxShadow(boxShadowOpacity),\n backdropFilter: getToolbarBackdropFilter(filterBlur),\n ...props.style,\n };\n\n const className = classnames(\n \"components-toolbar-items-container\",\n OrthogonalDirectionHelpers.getCssClassName(props.direction),\n showSeparators && \"components-toolbar-show-decorators\",\n props.className\n );\n\n return (\n <div className={className} style={divStyle} ref={ref}>\n {props.children}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"OverflowPanel.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/OverflowPanel.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAE9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuBrD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,qBA2DpE"}
1
+ {"version":3,"file":"OverflowPanel.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/OverflowPanel.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAE9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuBrD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,qBA0DpE"}
@@ -26,7 +26,6 @@ export function ToolbarOverflowPanel(props) {
26
26
  ? 0
27
27
  : TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;
28
28
  let showSeparators = toolbarOpacitySetting === ToolbarOpacitySetting.Transparent ? false : true;
29
- // istanbul ignore next
30
29
  if (toolbarOpacitySetting === ToolbarOpacitySetting.Proximity &&
31
30
  openPopupCount < 1 &&
32
31
  !overflowDisplayActive) {
@@ -1 +1 @@
1
- {"version":3,"file":"OverflowPanel.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/OverflowPanel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,oCAAoC,EACpC,kCAAkC,EAClC,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,sCAAsC,GACvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAU/B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,EACJ,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,GAAG,sCAAsC,EAAE,CAAC;IAC7C,MAAM,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAErD,MAAM,wBAAwB,GAC5B,qBAAqB,KAAK,qBAAqB,CAAC,WAAW,CAAC;IAC9D,IAAI,cAAc,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC5E,IAAI,gBAAgB,GAAG,wBAAwB;QAC7C,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,kCAAkC,CAAC;IACvC,IAAI,UAAU,GAAG,wBAAwB;QACvC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,oCAAoC,CAAC;IACzC,IAAI,cAAc,GAChB,qBAAqB,KAAK,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7E,uBAAuB;IACvB,IACE,qBAAqB,KAAK,qBAAqB,CAAC,SAAS;QACzD,cAAc,GAAG,CAAC;QAClB,CAAC,qBAAqB,EACtB,CAAC;QACD,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;QACzD,gBAAgB,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC7D,UAAU,GAAG,2BAA2B,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,cAAc,GAAG,IAAI;YAAE,cAAc,GAAG,KAAK,CAAC;IACpD,CAAC;IAED,MAAM,QAAQ,GAAwB;QACpC,eAAe,EAAE,yBAAyB,CAAC,cAAc,CAAC;QAC1D,SAAS,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;QAChD,cAAc,EAAE,wBAAwB,CAAC,UAAU,CAAC;QACpD,GAAG,KAAK,CAAC,KAAK;KACf,CAAC;IAEF,MAAM,SAAS,GAAG,UAAU,CAC1B,mCAAmC,EACnC,oCAAoC,EACpC,0BAA0B,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAC7D,GAAG,0BAA0B,CAAC,eAAe,CAC3C,iBAAiB,CAClB,IAAI,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAClD,cAAc,IAAI,oCAAoC,EACtD,gBAAgB,CAAC,eAAe,CAAC,iBAAiB,CAAC,EACnD,KAAK,CAAC,SAAS,CAChB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,IACvC,KAAK,CAAC,QAAQ,CACX,CACP,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ToolSettings\n */\n\nimport \"./OverflowPanel.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n calculateBackdropFilterBlur,\n calculateBoxShadowOpacity,\n calculateToolbarOpacity,\n getToolbarBackdropFilter,\n getToolbarBackgroundColor,\n getToolbarBoxShadow,\n TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT,\n TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT,\n TOOLBAR_OPACITY_DEFAULT,\n useWidgetOpacityContext,\n} from \"@itwin/core-react\";\n\nimport {\n ToolbarOpacitySetting,\n useToolbarWithOverflowDirectionContext,\n} from \"./InternalToolbarComponent\";\nimport {\n DirectionHelpers,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\n\n/** Properties of [[ToolbarOverflowPanel]] component.\n * @internal\n */\nexport interface ToolbarOverflowPanelProps extends CommonProps {\n /** Panel content. */\n children?: React.ReactNode;\n}\n\n/** Displays overflown tool settings.\n * @internal\n */\nexport function ToolbarOverflowPanel(props: ToolbarOverflowPanelProps) {\n const {\n toolbarOpacitySetting,\n openPopupCount,\n overflowDisplayActive,\n expandsTo,\n overflowExpandsTo,\n overflowDirection,\n } = useToolbarWithOverflowDirectionContext();\n const { proximityScale } = useWidgetOpacityContext();\n\n const useTransparentBackground =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent;\n let toolbarOpacity = useTransparentBackground ? 0 : TOOLBAR_OPACITY_DEFAULT;\n let boxShadowOpacity = useTransparentBackground\n ? 0\n : TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT;\n let filterBlur = useTransparentBackground\n ? 0\n : TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;\n let showSeparators =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent ? false : true;\n\n // istanbul ignore next\n if (\n toolbarOpacitySetting === ToolbarOpacitySetting.Proximity &&\n openPopupCount < 1 &&\n !overflowDisplayActive\n ) {\n toolbarOpacity = calculateToolbarOpacity(proximityScale);\n boxShadowOpacity = calculateBoxShadowOpacity(proximityScale);\n filterBlur = calculateBackdropFilterBlur(proximityScale);\n if (proximityScale < 0.25) showSeparators = false;\n }\n\n const divStyle: React.CSSProperties = {\n backgroundColor: getToolbarBackgroundColor(toolbarOpacity),\n boxShadow: getToolbarBoxShadow(boxShadowOpacity),\n backdropFilter: getToolbarBackdropFilter(filterBlur),\n ...props.style,\n };\n\n const className = classnames(\n \"components-toolbar-overflow-panel\",\n \"components-toolbar-items-container\",\n OrthogonalDirectionHelpers.getCssClassName(overflowDirection),\n `${OrthogonalDirectionHelpers.getCssClassName(\n overflowDirection\n )}-${DirectionHelpers.getCssClassName(expandsTo)}`,\n showSeparators && \"components-toolbar-show-decorators\",\n DirectionHelpers.getCssClassName(overflowExpandsTo),\n props.className\n );\n\n return (\n <div className={className} style={divStyle}>\n {props.children}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"OverflowPanel.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/OverflowPanel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,oCAAoC,EACpC,kCAAkC,EAClC,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,sCAAsC,GACvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAU/B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,EACJ,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,GAAG,sCAAsC,EAAE,CAAC;IAC7C,MAAM,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAErD,MAAM,wBAAwB,GAC5B,qBAAqB,KAAK,qBAAqB,CAAC,WAAW,CAAC;IAC9D,IAAI,cAAc,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC5E,IAAI,gBAAgB,GAAG,wBAAwB;QAC7C,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,kCAAkC,CAAC;IACvC,IAAI,UAAU,GAAG,wBAAwB;QACvC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,oCAAoC,CAAC;IACzC,IAAI,cAAc,GAChB,qBAAqB,KAAK,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7E,IACE,qBAAqB,KAAK,qBAAqB,CAAC,SAAS;QACzD,cAAc,GAAG,CAAC;QAClB,CAAC,qBAAqB,EACtB,CAAC;QACD,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;QACzD,gBAAgB,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC7D,UAAU,GAAG,2BAA2B,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,cAAc,GAAG,IAAI;YAAE,cAAc,GAAG,KAAK,CAAC;IACpD,CAAC;IAED,MAAM,QAAQ,GAAwB;QACpC,eAAe,EAAE,yBAAyB,CAAC,cAAc,CAAC;QAC1D,SAAS,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;QAChD,cAAc,EAAE,wBAAwB,CAAC,UAAU,CAAC;QACpD,GAAG,KAAK,CAAC,KAAK;KACf,CAAC;IAEF,MAAM,SAAS,GAAG,UAAU,CAC1B,mCAAmC,EACnC,oCAAoC,EACpC,0BAA0B,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAC7D,GAAG,0BAA0B,CAAC,eAAe,CAC3C,iBAAiB,CAClB,IAAI,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAClD,cAAc,IAAI,oCAAoC,EACtD,gBAAgB,CAAC,eAAe,CAAC,iBAAiB,CAAC,EACnD,KAAK,CAAC,SAAS,CAChB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,IACvC,KAAK,CAAC,QAAQ,CACX,CACP,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ToolSettings\n */\n\nimport \"./OverflowPanel.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n calculateBackdropFilterBlur,\n calculateBoxShadowOpacity,\n calculateToolbarOpacity,\n getToolbarBackdropFilter,\n getToolbarBackgroundColor,\n getToolbarBoxShadow,\n TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT,\n TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT,\n TOOLBAR_OPACITY_DEFAULT,\n useWidgetOpacityContext,\n} from \"@itwin/core-react\";\n\nimport {\n ToolbarOpacitySetting,\n useToolbarWithOverflowDirectionContext,\n} from \"./InternalToolbarComponent\";\nimport {\n DirectionHelpers,\n OrthogonalDirectionHelpers,\n} from \"./utilities/Direction\";\n\n/** Properties of [[ToolbarOverflowPanel]] component.\n * @internal\n */\nexport interface ToolbarOverflowPanelProps extends CommonProps {\n /** Panel content. */\n children?: React.ReactNode;\n}\n\n/** Displays overflown tool settings.\n * @internal\n */\nexport function ToolbarOverflowPanel(props: ToolbarOverflowPanelProps) {\n const {\n toolbarOpacitySetting,\n openPopupCount,\n overflowDisplayActive,\n expandsTo,\n overflowExpandsTo,\n overflowDirection,\n } = useToolbarWithOverflowDirectionContext();\n const { proximityScale } = useWidgetOpacityContext();\n\n const useTransparentBackground =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent;\n let toolbarOpacity = useTransparentBackground ? 0 : TOOLBAR_OPACITY_DEFAULT;\n let boxShadowOpacity = useTransparentBackground\n ? 0\n : TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT;\n let filterBlur = useTransparentBackground\n ? 0\n : TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;\n let showSeparators =\n toolbarOpacitySetting === ToolbarOpacitySetting.Transparent ? false : true;\n\n if (\n toolbarOpacitySetting === ToolbarOpacitySetting.Proximity &&\n openPopupCount < 1 &&\n !overflowDisplayActive\n ) {\n toolbarOpacity = calculateToolbarOpacity(proximityScale);\n boxShadowOpacity = calculateBoxShadowOpacity(proximityScale);\n filterBlur = calculateBackdropFilterBlur(proximityScale);\n if (proximityScale < 0.25) showSeparators = false;\n }\n\n const divStyle: React.CSSProperties = {\n backgroundColor: getToolbarBackgroundColor(toolbarOpacity),\n boxShadow: getToolbarBoxShadow(boxShadowOpacity),\n backdropFilter: getToolbarBackdropFilter(filterBlur),\n ...props.style,\n };\n\n const className = classnames(\n \"components-toolbar-overflow-panel\",\n \"components-toolbar-items-container\",\n OrthogonalDirectionHelpers.getCssClassName(overflowDirection),\n `${OrthogonalDirectionHelpers.getCssClassName(\n overflowDirection\n )}-${DirectionHelpers.getCssClassName(expandsTo)}`,\n showSeparators && \"components-toolbar-show-decorators\",\n DirectionHelpers.getCssClassName(overflowExpandsTo),\n props.className\n );\n\n return (\n <div className={className} style={divStyle}>\n {props.children}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopupItem.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAQrD,cAAc;AACd,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/D;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,yCAQ5B,CAAC;AAEL;;;GAGG;AACH,wBAAgB,sBAAsB,6BAErC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,sBAAsB;IAC5D,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;kEAC8D;IAC9D,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAiF9C;AAED,gBAAgB;AAChB,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAUxD"}
1
+ {"version":3,"file":"PopupItem.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAQrD,cAAc;AACd,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/D;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,yCAM5B,CAAC;AAEL;;;GAGG;AACH,wBAAgB,sBAAsB,6BAErC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,sBAAsB;IAC5D,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;kEAC8D;IAC9D,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBA4E9C;AAED,gBAAgB;AAChB,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAUxD"}
@@ -17,9 +17,9 @@ import { toToolbarPopupRelativePosition } from "./PopupItemWithDrag";
17
17
  */
18
18
  export const ToolbarPopupContext = React.createContext({
19
19
  /** function used to close popup panel */
20
- closePanel: /* istanbul ignore next */ () => { },
20
+ closePanel: () => { },
21
21
  /** if popup panel is a GroupButton then this is call to set the selected action item within the panel */
22
- setSelectedItem: /* istanbul ignore next */ (_buttonItem) => { },
22
+ setSelectedItem: (_buttonItem) => { },
23
23
  });
24
24
  /**
25
25
  * React hook used to retrieve the ToolbarPopupContext.
@@ -36,7 +36,6 @@ export function PopupItem(props) {
36
36
  const { expandsTo, overflowExpandsTo, panelAlignment, onPopupPanelOpenClose, } = useToolbarWithOverflowDirectionContext();
37
37
  const processPanelOpenClose = React.useCallback((isOpening) => {
38
38
  setPanelShown((prev) => {
39
- // istanbul ignore else
40
39
  if (prev !== isOpening)
41
40
  onPopupPanelOpenClose(isOpening);
42
41
  return isOpening;
@@ -45,13 +44,11 @@ export function PopupItem(props) {
45
44
  // handle open and closing overflow panel
46
45
  const onButtonClick = React.useCallback(() => {
47
46
  processPanelOpenClose(!isPanelShown);
48
- // istanbul ignore next
49
47
  if (props.onClick)
50
48
  props.onClick();
51
49
  }, [props, isPanelShown, processPanelOpenClose]);
52
50
  const className = classnames("components-toolbar-button-item", "components-toolbar-expandable-button", props.isDisabled && "components-disabled", props.className);
53
51
  const [targetRef, target] = useRefState();
54
- // istanbul ignore next
55
52
  const handleClose = React.useCallback(() => {
56
53
  processPanelOpenClose(false);
57
54
  }, [processPanelOpenClose]);
@@ -64,7 +61,7 @@ export function PopupItem(props) {
64
61
  React.createElement("button", { "data-item-id": props.itemId, "data-item-type": "tool-button-popup", "data-item-group-priority": props.groupPriority, "data-item-priority": props.itemPriority, "data-item-provider-id": props.providerId, ref: targetRef, disabled: props.isDisabled, onClick: onButtonClick, onKeyDown: props.onKeyDown, className: className, style: props.style, title: props.title },
65
62
  React.createElement("div", { className: "components-icon" }, props.icon),
66
63
  props.badge && React.createElement("div", { className: "components-badge" }, props.badge),
67
- hideIndicator ? /* istanbul ignore next */ undefined : (React.createElement("div", { className: "components-triangle" }))),
64
+ hideIndicator ? undefined : React.createElement("div", { className: "components-triangle" })),
68
65
  React.createElement(PopupItemPopup, { isOpen: isPanelShown, onClose: handleClose, position: toToolbarPopupRelativePosition(expandsToDirection, panelAlignment), target: target, keepContentsMounted: props.keepContentsMounted }, panel)));
69
66
  }
70
67
  /** @internal */
@@ -1 +1 @@
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 type { ActionButton, RelativePosition } from \"@itwin/appui-abstract\";\nimport { Popup, useRefState } from \"@itwin/core-react\";\nimport type { ToolbarButtonItemProps } from \"./Item\";\nimport {\n useToolbarPopupAutoHideContext,\n useToolbarWithOverflowDirectionContext,\n useToolItemEntryContext,\n} from \"./InternalToolbarComponent\";\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 */\nexport const ToolbarPopupContext =\n 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 */ (\n _buttonItem: ActionButton\n ) => {},\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 {\n expandsTo,\n overflowExpandsTo,\n panelAlignment,\n onPopupPanelOpenClose,\n } = useToolbarWithOverflowDirectionContext();\n const processPanelOpenClose = React.useCallback(\n (isOpening: boolean) => {\n setPanelShown((prev) => {\n // istanbul ignore else\n if (prev !== isOpening) onPopupPanelOpenClose(isOpening);\n return isOpening;\n });\n },\n [setPanelShown, onPopupPanelOpenClose]\n );\n\n // handle open and closing overflow panel\n const onButtonClick = React.useCallback(() => {\n processPanelOpenClose(!isPanelShown);\n // istanbul ignore next\n if (props.onClick) 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\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\n value={{\n closePanel: () => processPanelOpenClose(false),\n }}\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\">{props.icon}</div>\n {props.badge && <div className=\"components-badge\">{props.badge}</div>}\n {hideIndicator ? /* istanbul ignore next */ undefined : (\n <div className=\"components-triangle\" />\n )}\n </button>\n <PopupItemPopup\n isOpen={isPanelShown}\n onClose={handleClose}\n position={toToolbarPopupRelativePosition(\n expandsToDirection,\n panelAlignment\n )}\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\n return (\n <Popup className={className} offset={0} showShadow={false} {...props} />\n );\n}\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 type { ActionButton, RelativePosition } from \"@itwin/appui-abstract\";\nimport { Popup, useRefState } from \"@itwin/core-react\";\nimport type { ToolbarButtonItemProps } from \"./Item\";\nimport {\n useToolbarPopupAutoHideContext,\n useToolbarWithOverflowDirectionContext,\n useToolItemEntryContext,\n} from \"./InternalToolbarComponent\";\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 */\nexport const ToolbarPopupContext =\n React.createContext<ToolbarPopupContextProps>({\n /** function used to close popup panel */\n closePanel: () => {},\n /** if popup panel is a GroupButton then this is call to set the selected action item within the panel */\n setSelectedItem: (_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 {\n expandsTo,\n overflowExpandsTo,\n panelAlignment,\n onPopupPanelOpenClose,\n } = useToolbarWithOverflowDirectionContext();\n const processPanelOpenClose = React.useCallback(\n (isOpening: boolean) => {\n setPanelShown((prev) => {\n if (prev !== isOpening) onPopupPanelOpenClose(isOpening);\n return isOpening;\n });\n },\n [setPanelShown, onPopupPanelOpenClose]\n );\n\n // handle open and closing overflow panel\n const onButtonClick = React.useCallback(() => {\n processPanelOpenClose(!isPanelShown);\n if (props.onClick) 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\n const [targetRef, target] = useRefState<HTMLButtonElement>();\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\n value={{\n closePanel: () => processPanelOpenClose(false),\n }}\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\">{props.icon}</div>\n {props.badge && <div className=\"components-badge\">{props.badge}</div>}\n {hideIndicator ? undefined : <div className=\"components-triangle\" />}\n </button>\n <PopupItemPopup\n isOpen={isPanelShown}\n onClose={handleClose}\n position={toToolbarPopupRelativePosition(\n expandsToDirection,\n panelAlignment\n )}\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\n return (\n <Popup className={className} offset={0} showShadow={false} {...props} />\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopupItemWithDrag.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemWithDrag.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EACL,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,4BAA4B;IAC5B,SAAS,EAAE,WAAW,CAAC;CACxB;AAiDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,qBAwI9D;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAelB"}
1
+ {"version":3,"file":"PopupItemWithDrag.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemWithDrag.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EACL,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,4BAA4B;IAC5B,SAAS,EAAE,WAAW,CAAC;CACxB;AA6CD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,qBAiI9D;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAclB"}
@@ -17,7 +17,6 @@ import { useDragInteraction } from "./useDragInteraction";
17
17
  import { Direction } from "./utilities/Direction";
18
18
  function tryFindActiveAction(item) {
19
19
  for (const childItem of item.items) {
20
- // istanbul ignore else
21
20
  if (ToolbarItemUtilities.isActionButton(childItem)) {
22
21
  if (childItem.isActive)
23
22
  return childItem;
@@ -36,10 +35,8 @@ function getFirstAvailableChildActionItem(item) {
36
35
  return childItem;
37
36
  }
38
37
  else {
39
- // istanbul ignore else
40
38
  if (ToolbarItemUtilities.isGroupButton(childItem)) {
41
39
  const nestedChild = getFirstAvailableChildActionItem(childItem);
42
- // istanbul ignore else
43
40
  if (nestedChild)
44
41
  return nestedChild;
45
42
  }
@@ -53,7 +50,6 @@ function getActiveAction(item) {
53
50
  return activeItem;
54
51
  // initially look only in root items
55
52
  for (const childItem of item.items) {
56
- // istanbul ignore else
57
53
  if (ToolbarItemUtilities.isActionButton(childItem)) {
58
54
  return childItem;
59
55
  }
@@ -70,9 +66,7 @@ export function PopupItemWithDrag(props) {
70
66
  const { expandsTo, overflowExpandsTo, panelAlignment, onPopupPanelOpenClose, } = useToolbarWithOverflowDirectionContext();
71
67
  React.useEffect(() => {
72
68
  const newActiveAction = getActiveAction(props.groupItem);
73
- // istanbul ignore else
74
69
  if (newActiveAction) {
75
- // istanbul ignore next
76
70
  if (newActiveAction.isActive) {
77
71
  setActiveAction(newActiveAction);
78
72
  }
@@ -85,7 +79,6 @@ export function PopupItemWithDrag(props) {
85
79
  }, [props.groupItem, activeAction]);
86
80
  const processPanelOpenClose = React.useCallback((isOpening) => {
87
81
  setPanelShown((prev) => {
88
- // istanbul ignore else
89
82
  if (prev !== isOpening)
90
83
  onPopupPanelOpenClose(isOpening);
91
84
  return isOpening;
@@ -117,12 +110,10 @@ export function PopupItemWithDrag(props) {
117
110
  processPanelOpenClose(false);
118
111
  }, [processPanelOpenClose]);
119
112
  const { hasOverflow } = useToolItemEntryContext();
120
- const expandsToDirection = hasOverflow
121
- ? /* istanbul ignore next */ overflowExpandsTo
122
- : expandsTo;
113
+ const expandsToDirection = hasOverflow ? overflowExpandsTo : expandsTo;
123
114
  return (React.createElement(ToolbarPopupContext.Provider, { value: {
124
- closePanel: /* istanbul ignore next */ () => processPanelOpenClose(false),
125
- setSelectedItem: /* istanbul ignore next */ (buttonItem) => setActiveAction(buttonItem),
115
+ closePanel: () => processPanelOpenClose(false),
116
+ setSelectedItem: (buttonItem) => setActiveAction(buttonItem),
126
117
  } },
127
118
  React.createElement("button", { "data-item-id": props.itemId, "data-item-type": "action-tool-button", "data-item-group-priority": props.groupPriority, "data-item-priority": props.itemPriority, "data-item-provider-id": props.providerId, ref: targetRef, onPointerDown: handlePointerDown, onClick: handleButtonClick, onKeyDown: props.onKeyDown, className: className, style: props.style, title: title },
128
119
  React.createElement("div", { className: "components-icon" }, icon),
@@ -133,7 +124,6 @@ export function PopupItemWithDrag(props) {
133
124
  }
134
125
  /** @internal */
135
126
  export function toToolbarPopupRelativePosition(expandsTo, alignment) {
136
- // istanbul ignore next
137
127
  switch (expandsTo) {
138
128
  case Direction.Bottom: {
139
129
  if (alignment === ToolbarPanelAlignment.End)
@@ -1 +1 @@
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 type { ActionButton, GroupButton } from \"@itwin/appui-abstract\";\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n RelativePosition,\n ToolbarItemUtilities,\n} from \"@itwin/appui-abstract\";\nimport { Badge, IconHelper, useRefState } from \"@itwin/core-react\";\nimport type { ToolbarButtonItemProps } from \"./Item\";\nimport { PopupItemPopup, ToolbarPopupContext } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport {\n ToolbarPanelAlignment,\n useToolbarWithOverflowDirectionContext,\n useToolItemEntryContext,\n} from \"./InternalToolbarComponent\";\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) return childItem;\n } else if (ToolbarItemUtilities.isGroupButton(childItem)) {\n const nestedChild = tryFindActiveAction(childItem);\n if (nestedChild) return nestedChild;\n }\n }\n return undefined;\n}\n\nfunction getFirstAvailableChildActionItem(\n item: GroupButton\n): 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) return nestedChild;\n }\n }\n }\n return undefined;\n}\n\nfunction getActiveAction(item: GroupButton): ActionButton | undefined {\n const activeItem = tryFindActiveAction(item);\n if (activeItem) 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(\n getActiveAction(props.groupItem)\n );\n const {\n expandsTo,\n overflowExpandsTo,\n panelAlignment,\n onPopupPanelOpenClose,\n } = 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(\n (isOpening: boolean) => {\n setPanelShown((prev) => {\n // istanbul ignore else\n if (prev !== isOpening) onPopupPanelOpenClose(isOpening);\n return isOpening;\n });\n },\n [setPanelShown, onPopupPanelOpenClose]\n );\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 &&\n !ConditionalBooleanValue.getValue(activeAction.isDisabled) &&\n activeAction.execute();\n }, [activeAction]);\n\n const icon = activeAction\n ? IconHelper.getIconReactNode(activeAction.icon, activeAction.internalData)\n : props.icon;\n const title = activeAction\n ? ConditionalStringValue.getValue(activeAction.label)\n : props.title;\n const isActive = activeAction ? activeAction.isActive : props.isActive;\n const isDisabled = ConditionalBooleanValue.getValue(\n activeAction ? activeAction.isDisabled : props.isDisabled\n );\n\n const { handlePointerDown, handleButtonClick } = useDragInteraction(\n onGroupButtonClick,\n onOpenPanel\n );\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\n const [targetRef, target] = useRefState<HTMLButtonElement>();\n const handleClose = React.useCallback(() => {\n processPanelOpenClose(false);\n }, [processPanelOpenClose]);\n const { hasOverflow } = useToolItemEntryContext();\n const expandsToDirection = hasOverflow\n ? /* istanbul ignore next */ overflowExpandsTo\n : expandsTo;\n\n return (\n <ToolbarPopupContext.Provider\n value={{\n closePanel: /* istanbul ignore next */ () =>\n processPanelOpenClose(false),\n setSelectedItem: /* istanbul ignore next */ (\n buttonItem: ActionButton\n ) => 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\">{icon}</div>\n {props.badge && (\n <div className=\"components-badge\">\n {activeAction ? (\n <Badge type={activeAction.badgeType} />\n ) : (\n props.badge\n )}\n </div>\n )}\n <div className=\"components-triangle\" />\n </button>\n <PopupItemPopup\n isOpen={isPanelShown}\n onClose={handleClose}\n position={toToolbarPopupRelativePosition(\n expandsToDirection,\n panelAlignment\n )}\n target={target}\n >\n <PopupItemsPanel\n groupItem={props.groupItem}\n activateOnPointerUp={true}\n />\n </PopupItemPopup>\n </ToolbarPopupContext.Provider>\n );\n}\n\n/** @internal */\nexport function toToolbarPopupRelativePosition(\n expandsTo: Direction,\n alignment: ToolbarPanelAlignment\n): 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
+ {"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 type { ActionButton, GroupButton } from \"@itwin/appui-abstract\";\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n RelativePosition,\n ToolbarItemUtilities,\n} from \"@itwin/appui-abstract\";\nimport { Badge, IconHelper, useRefState } from \"@itwin/core-react\";\nimport type { ToolbarButtonItemProps } from \"./Item\";\nimport { PopupItemPopup, ToolbarPopupContext } from \"./PopupItem\";\nimport { PopupItemsPanel } from \"./PopupItemsPanel\";\nimport {\n ToolbarPanelAlignment,\n useToolbarWithOverflowDirectionContext,\n useToolItemEntryContext,\n} from \"./InternalToolbarComponent\";\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 if (ToolbarItemUtilities.isActionButton(childItem)) {\n if (childItem.isActive) return childItem;\n } else if (ToolbarItemUtilities.isGroupButton(childItem)) {\n const nestedChild = tryFindActiveAction(childItem);\n if (nestedChild) return nestedChild;\n }\n }\n return undefined;\n}\n\nfunction getFirstAvailableChildActionItem(\n item: GroupButton\n): ActionButton | undefined {\n for (const childItem of item.items) {\n if (ToolbarItemUtilities.isActionButton(childItem)) {\n return childItem;\n } else {\n if (ToolbarItemUtilities.isGroupButton(childItem)) {\n const nestedChild = getFirstAvailableChildActionItem(childItem);\n if (nestedChild) return nestedChild;\n }\n }\n }\n return undefined;\n}\n\nfunction getActiveAction(item: GroupButton): ActionButton | undefined {\n const activeItem = tryFindActiveAction(item);\n if (activeItem) return activeItem;\n\n // initially look only in root items\n for (const childItem of item.items) {\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(\n getActiveAction(props.groupItem)\n );\n const {\n expandsTo,\n overflowExpandsTo,\n panelAlignment,\n onPopupPanelOpenClose,\n } = useToolbarWithOverflowDirectionContext();\n\n React.useEffect(() => {\n const newActiveAction = getActiveAction(props.groupItem);\n if (newActiveAction) {\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(\n (isOpening: boolean) => {\n setPanelShown((prev) => {\n if (prev !== isOpening) onPopupPanelOpenClose(isOpening);\n return isOpening;\n });\n },\n [setPanelShown, onPopupPanelOpenClose]\n );\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 &&\n !ConditionalBooleanValue.getValue(activeAction.isDisabled) &&\n activeAction.execute();\n }, [activeAction]);\n\n const icon = activeAction\n ? IconHelper.getIconReactNode(activeAction.icon, activeAction.internalData)\n : props.icon;\n const title = activeAction\n ? ConditionalStringValue.getValue(activeAction.label)\n : props.title;\n const isActive = activeAction ? activeAction.isActive : props.isActive;\n const isDisabled = ConditionalBooleanValue.getValue(\n activeAction ? activeAction.isDisabled : props.isDisabled\n );\n\n const { handlePointerDown, handleButtonClick } = useDragInteraction(\n onGroupButtonClick,\n onOpenPanel\n );\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\n const [targetRef, target] = useRefState<HTMLButtonElement>();\n const handleClose = React.useCallback(() => {\n processPanelOpenClose(false);\n }, [processPanelOpenClose]);\n const { hasOverflow } = useToolItemEntryContext();\n const expandsToDirection = hasOverflow ? overflowExpandsTo : expandsTo;\n\n return (\n <ToolbarPopupContext.Provider\n value={{\n closePanel: () => processPanelOpenClose(false),\n setSelectedItem: (buttonItem: ActionButton) =>\n 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\">{icon}</div>\n {props.badge && (\n <div className=\"components-badge\">\n {activeAction ? (\n <Badge type={activeAction.badgeType} />\n ) : (\n props.badge\n )}\n </div>\n )}\n <div className=\"components-triangle\" />\n </button>\n <PopupItemPopup\n isOpen={isPanelShown}\n onClose={handleClose}\n position={toToolbarPopupRelativePosition(\n expandsToDirection,\n panelAlignment\n )}\n target={target}\n >\n <PopupItemsPanel\n groupItem={props.groupItem}\n activateOnPointerUp={true}\n />\n </PopupItemPopup>\n </ToolbarPopupContext.Provider>\n );\n}\n\n/** @internal */\nexport function toToolbarPopupRelativePosition(\n expandsTo: Direction,\n alignment: ToolbarPanelAlignment\n): RelativePosition {\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.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemsPanel.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAwBvE,UAAU,oBAAoB;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBAmK1D"}
1
+ {"version":3,"file":"PopupItemsPanel.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/PopupItemsPanel.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAwBvE,UAAU,oBAAoB;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBA8J1D"}