@itwin/components-react 3.6.0-dev.55 → 3.6.0-dev.60

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 (235) hide show
  1. package/lib/cjs/components-react/breadcrumb/Breadcrumb.d.ts +5 -5
  2. package/lib/cjs/components-react/breadcrumb/Breadcrumb.js +3 -3
  3. package/lib/cjs/components-react/breadcrumb/Breadcrumb.js.map +1 -1
  4. package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.d.ts +2 -2
  5. package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.js +1 -1
  6. package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.js.map +1 -1
  7. package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.d.ts +3 -3
  8. package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.js +2 -2
  9. package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.js.map +1 -1
  10. package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.d.ts +1 -1
  11. package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.js +1 -1
  12. package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.js.map +1 -1
  13. package/lib/cjs/components-react/common/showhide/ShowHideDialog.d.ts +2 -2
  14. package/lib/cjs/components-react/common/showhide/ShowHideDialog.js +1 -1
  15. package/lib/cjs/components-react/common/showhide/ShowHideDialog.js.map +1 -1
  16. package/lib/cjs/components-react/common/showhide/ShowHideItem.d.ts +2 -2
  17. package/lib/cjs/components-react/common/showhide/ShowHideItem.js.map +1 -1
  18. package/lib/cjs/components-react/common/showhide/ShowHideMenu.d.ts +2 -2
  19. package/lib/cjs/components-react/common/showhide/ShowHideMenu.js +1 -1
  20. package/lib/cjs/components-react/common/showhide/ShowHideMenu.js.map +1 -1
  21. package/lib/cjs/components-react/editors/ThemedEnumEditor.d.ts +3 -3
  22. package/lib/cjs/components-react/editors/ThemedEnumEditor.js +2 -2
  23. package/lib/cjs/components-react/editors/ThemedEnumEditor.js.map +1 -1
  24. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +22 -25
  25. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  26. package/lib/cjs/components-react/filter-builder/FilterBuilder.js +19 -81
  27. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  28. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +80 -0
  29. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -0
  30. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +83 -0
  31. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -0
  32. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +14 -3
  33. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  34. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +16 -10
  35. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  36. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +4 -0
  37. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +25 -16
  38. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  39. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +22 -14
  40. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  41. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +14 -2
  42. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  43. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +11 -5
  44. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  45. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +16 -2
  46. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  47. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +11 -5
  48. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  49. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +14 -2
  50. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  51. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +11 -5
  52. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  53. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +50 -7
  54. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  55. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +60 -8
  56. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  57. package/lib/cjs/components-react/filter-builder/Operators.d.ts +23 -5
  58. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
  59. package/lib/cjs/components-react/filter-builder/Operators.js +25 -7
  60. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  61. package/lib/cjs/components-react/filter-builder/Types.d.ts +24 -4
  62. package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -1
  63. package/lib/cjs/components-react/filter-builder/Types.js +11 -1
  64. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  65. package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts +2 -2
  66. package/lib/cjs/components-react/iconpicker/IconPickerButton.js +2 -2
  67. package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
  68. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.d.ts +1 -1
  69. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.js.map +1 -1
  70. package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts +2 -2
  71. package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts.map +1 -1
  72. package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  73. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts +2 -2
  74. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  75. package/lib/cjs/components-react/table/SimpleTableDataProvider.d.ts +1 -1
  76. package/lib/cjs/components-react/table/SimpleTableDataProvider.js +1 -1
  77. package/lib/cjs/components-react/table/SimpleTableDataProvider.js.map +1 -1
  78. package/lib/cjs/components-react/table/TableDataProvider.d.ts +8 -8
  79. package/lib/cjs/components-react/table/TableDataProvider.js +2 -2
  80. package/lib/cjs/components-react/table/TableDataProvider.js.map +1 -1
  81. package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.d.ts +16 -16
  82. package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.js +6 -6
  83. package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.js.map +1 -1
  84. package/lib/cjs/components-react/table/component/ColumnDragLayer.d.ts +1 -1
  85. package/lib/cjs/components-react/table/component/ColumnDragLayer.js +1 -1
  86. package/lib/cjs/components-react/table/component/ColumnDragLayer.js.map +1 -1
  87. package/lib/cjs/components-react/table/component/Table.d.ts +9 -9
  88. package/lib/cjs/components-react/table/component/Table.d.ts.map +1 -1
  89. package/lib/cjs/components-react/table/component/Table.js +2 -2
  90. package/lib/cjs/components-react/table/component/Table.js.map +1 -1
  91. package/lib/cjs/components-react/table/component/TableCell.d.ts +6 -6
  92. package/lib/cjs/components-react/table/component/TableCell.js +3 -3
  93. package/lib/cjs/components-react/table/component/TableCell.js.map +1 -1
  94. package/lib/cjs/components-react/table/component/TableColumn.d.ts +1 -1
  95. package/lib/cjs/components-react/table/component/TableColumn.js.map +1 -1
  96. package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.d.ts +1 -1
  97. package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.js +1 -1
  98. package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.js.map +1 -1
  99. package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.d.ts +8 -8
  100. package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.js +2 -2
  101. package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.js.map +1 -1
  102. package/lib/cjs/components-react/table/component/dragdrop/withDragSource.d.ts +2 -2
  103. package/lib/cjs/components-react/table/component/dragdrop/withDragSource.js +1 -1
  104. package/lib/cjs/components-react/table/component/dragdrop/withDragSource.js.map +1 -1
  105. package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.d.ts +2 -2
  106. package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.js +1 -1
  107. package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.js.map +1 -1
  108. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  109. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  110. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  111. package/lib/cjs/components-react/tree/TreeDataProvider.d.ts +2 -2
  112. package/lib/cjs/components-react/tree/TreeDataProvider.d.ts.map +1 -1
  113. package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
  114. package/lib/cjs/components-react.d.ts +4 -6
  115. package/lib/cjs/components-react.d.ts.map +1 -1
  116. package/lib/cjs/components-react.js +4 -6
  117. package/lib/cjs/components-react.js.map +1 -1
  118. package/lib/esm/components-react/breadcrumb/Breadcrumb.d.ts +5 -5
  119. package/lib/esm/components-react/breadcrumb/Breadcrumb.js +3 -3
  120. package/lib/esm/components-react/breadcrumb/Breadcrumb.js.map +1 -1
  121. package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.d.ts +2 -2
  122. package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.js +1 -1
  123. package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.js.map +1 -1
  124. package/lib/esm/components-react/breadcrumb/BreadcrumbPath.d.ts +3 -3
  125. package/lib/esm/components-react/breadcrumb/BreadcrumbPath.js +2 -2
  126. package/lib/esm/components-react/breadcrumb/BreadcrumbPath.js.map +1 -1
  127. package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.d.ts +1 -1
  128. package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.js +1 -1
  129. package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.js.map +1 -1
  130. package/lib/esm/components-react/common/showhide/ShowHideDialog.d.ts +2 -2
  131. package/lib/esm/components-react/common/showhide/ShowHideDialog.js +1 -1
  132. package/lib/esm/components-react/common/showhide/ShowHideDialog.js.map +1 -1
  133. package/lib/esm/components-react/common/showhide/ShowHideItem.d.ts +2 -2
  134. package/lib/esm/components-react/common/showhide/ShowHideItem.js.map +1 -1
  135. package/lib/esm/components-react/common/showhide/ShowHideMenu.d.ts +2 -2
  136. package/lib/esm/components-react/common/showhide/ShowHideMenu.js +1 -1
  137. package/lib/esm/components-react/common/showhide/ShowHideMenu.js.map +1 -1
  138. package/lib/esm/components-react/editors/ThemedEnumEditor.d.ts +3 -3
  139. package/lib/esm/components-react/editors/ThemedEnumEditor.js +2 -2
  140. package/lib/esm/components-react/editors/ThemedEnumEditor.js.map +1 -1
  141. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +22 -25
  142. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  143. package/lib/esm/components-react/filter-builder/FilterBuilder.js +12 -73
  144. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  145. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +80 -0
  146. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -0
  147. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +60 -0
  148. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -0
  149. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +14 -3
  150. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  151. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +11 -5
  152. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  153. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +4 -0
  154. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +25 -16
  155. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  156. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +15 -7
  157. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  158. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +14 -2
  159. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  160. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +7 -1
  161. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  162. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +16 -2
  163. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  164. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +7 -1
  165. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  166. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +14 -2
  167. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  168. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +7 -1
  169. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  170. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +50 -7
  171. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  172. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +54 -3
  173. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  174. package/lib/esm/components-react/filter-builder/Operators.d.ts +23 -5
  175. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
  176. package/lib/esm/components-react/filter-builder/Operators.js +23 -5
  177. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  178. package/lib/esm/components-react/filter-builder/Types.d.ts +24 -4
  179. package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -1
  180. package/lib/esm/components-react/filter-builder/Types.js +11 -1
  181. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  182. package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts +2 -2
  183. package/lib/esm/components-react/iconpicker/IconPickerButton.js +2 -2
  184. package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
  185. package/lib/esm/components-react/propertygrid/component/PropertyGrid.d.ts +1 -1
  186. package/lib/esm/components-react/propertygrid/component/PropertyGrid.js.map +1 -1
  187. package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts +2 -2
  188. package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts.map +1 -1
  189. package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  190. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts +2 -2
  191. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  192. package/lib/esm/components-react/table/SimpleTableDataProvider.d.ts +1 -1
  193. package/lib/esm/components-react/table/SimpleTableDataProvider.js +1 -1
  194. package/lib/esm/components-react/table/SimpleTableDataProvider.js.map +1 -1
  195. package/lib/esm/components-react/table/TableDataProvider.d.ts +8 -8
  196. package/lib/esm/components-react/table/TableDataProvider.js +2 -2
  197. package/lib/esm/components-react/table/TableDataProvider.js.map +1 -1
  198. package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.d.ts +16 -16
  199. package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.js +6 -6
  200. package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.js.map +1 -1
  201. package/lib/esm/components-react/table/component/ColumnDragLayer.d.ts +1 -1
  202. package/lib/esm/components-react/table/component/ColumnDragLayer.js +1 -1
  203. package/lib/esm/components-react/table/component/ColumnDragLayer.js.map +1 -1
  204. package/lib/esm/components-react/table/component/Table.d.ts +9 -9
  205. package/lib/esm/components-react/table/component/Table.d.ts.map +1 -1
  206. package/lib/esm/components-react/table/component/Table.js +2 -2
  207. package/lib/esm/components-react/table/component/Table.js.map +1 -1
  208. package/lib/esm/components-react/table/component/TableCell.d.ts +6 -6
  209. package/lib/esm/components-react/table/component/TableCell.js +3 -3
  210. package/lib/esm/components-react/table/component/TableCell.js.map +1 -1
  211. package/lib/esm/components-react/table/component/TableColumn.d.ts +1 -1
  212. package/lib/esm/components-react/table/component/TableColumn.js.map +1 -1
  213. package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.d.ts +1 -1
  214. package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.js +1 -1
  215. package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.js.map +1 -1
  216. package/lib/esm/components-react/table/component/dragdrop/DragDropDef.d.ts +8 -8
  217. package/lib/esm/components-react/table/component/dragdrop/DragDropDef.js +2 -2
  218. package/lib/esm/components-react/table/component/dragdrop/DragDropDef.js.map +1 -1
  219. package/lib/esm/components-react/table/component/dragdrop/withDragSource.d.ts +2 -2
  220. package/lib/esm/components-react/table/component/dragdrop/withDragSource.js +1 -1
  221. package/lib/esm/components-react/table/component/dragdrop/withDragSource.js.map +1 -1
  222. package/lib/esm/components-react/table/component/dragdrop/withDropTarget.d.ts +2 -2
  223. package/lib/esm/components-react/table/component/dragdrop/withDropTarget.js +1 -1
  224. package/lib/esm/components-react/table/component/dragdrop/withDropTarget.js.map +1 -1
  225. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  226. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  227. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  228. package/lib/esm/components-react/tree/TreeDataProvider.d.ts +2 -2
  229. package/lib/esm/components-react/tree/TreeDataProvider.d.ts.map +1 -1
  230. package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
  231. package/lib/esm/components-react.d.ts +4 -6
  232. package/lib/esm/components-react.d.ts.map +1 -1
  233. package/lib/esm/components-react.js +4 -6
  234. package/lib/esm/components-react.js.map +1 -1
  235. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbTreeUtils.js","sourceRoot":"","sources":["../../../../src/components-react/breadcrumb/BreadcrumbTreeUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Breadcrumb\r\n */\r\nimport { PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport { CellItem, ColumnDescription, RowItem, TableDataChangeEvent, TableDataProvider } from \"../table/TableDataProvider\";\r\nimport { DelayLoadedTreeNodeItem, hasChildren, ImmediatelyLoadedTreeNodeItem, TreeDataProvider, TreeNodeItem } from \"../tree/TreeDataProvider\";\r\nimport { UiComponents } from \"../UiComponents\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/**\r\n * Utility class for tree searching and manipulation in the Breadcrumb component.\r\n * @beta\r\n * @deprecated\r\n */\r\nexport class BreadcrumbTreeUtils {\r\n\r\n private static createIcon(node: TreeNodeItem): CellItem {\r\n return {\r\n key: \"icon\", record:\r\n new PropertyRecord(\r\n {\r\n value: hasChildren(node) ? \"icon-folder\" : node.icon,\r\n valueFormat: PropertyValueFormat.Primitive,\r\n displayValue: hasChildren(node) ? \"icon-folder\" : node.icon!,\r\n },\r\n {\r\n name: \"icon\",\r\n displayLabel: UiComponents.translate(\"breadcrumb.icon\"),\r\n typename: \"icon\",\r\n }),\r\n };\r\n }\r\n\r\n private static createLabel(node: TreeNodeItem): CellItem {\r\n return {\r\n key: \"label\",\r\n record: node.label,\r\n };\r\n }\r\n\r\n private static createDescription(node: TreeNodeItem): CellItem {\r\n return {\r\n key: \"description\",\r\n record: new PropertyRecord(\r\n {\r\n value: node.description || \"\",\r\n valueFormat: PropertyValueFormat.Primitive,\r\n displayValue: node.description || \"\",\r\n },\r\n {\r\n name: \"description\",\r\n displayLabel: UiComponents.translate(\"breadcrumb.description\"),\r\n typename: \"text\",\r\n }),\r\n };\r\n }\r\n\r\n /**\r\n * Transforms a list of children from a tree node into a [[TableDataProvider]], given a list of column descriptions.\r\n * @param nodes Node list to use as a basis for the [[TableDataProvider]].\r\n * @param columns An array of column descriptions to specify which columns to provide to the resulting [[TableDataProvider]].\r\n * @returns A [[TableDataProvider]] object that can be used to populate a Table component.\r\n */\r\n public static aliasNodeListToTableDataProvider(nodes: TreeNodeItem[], columns: ColumnDescription[], treeDataProvider?: TreeDataProvider): TableDataProvider {\r\n return {\r\n onColumnsChanged: new TableDataChangeEvent(),\r\n onRowsChanged: new TableDataChangeEvent(),\r\n getColumns: async () => columns,\r\n getRowsCount: async () => nodes.length,\r\n getRow: async (rowIndex: number, _unfiltered?: boolean): Promise<DataRowItem> => {\r\n if (rowIndex < 0 || rowIndex > nodes.length)\r\n return { _node: {} as TreeNodeItem, key: \"\", cells: [] };\r\n\r\n const node = nodes[rowIndex];\r\n\r\n const cells: CellItem[] = [\r\n BreadcrumbTreeUtils.createIcon(node),\r\n BreadcrumbTreeUtils.createLabel(node),\r\n BreadcrumbTreeUtils.createDescription(node),\r\n ];\r\n\r\n for (const key in node.extendedData) {\r\n // only add string values to table cell list\r\n if (node.extendedData.hasOwnProperty(key) && node.extendedData[key] instanceof PropertyRecord) {\r\n cells.push({\r\n key,\r\n record: node.extendedData[key],\r\n style: node.style,\r\n });\r\n } else if (node.extendedData.hasOwnProperty(key) && (typeof node.extendedData[key] === \"string\" || typeof node.extendedData[key] === \"boolean\" || typeof node.extendedData[key] === \"number\")) {\r\n cells.push({\r\n key,\r\n record: new PropertyRecord(\r\n {\r\n value: node.extendedData[key].toString(),\r\n valueFormat: PropertyValueFormat.Primitive,\r\n displayValue: node.extendedData[key].toString(),\r\n },\r\n {\r\n name: key,\r\n displayLabel: key,\r\n typename: \"text\",\r\n }),\r\n style: node.style,\r\n });\r\n }\r\n }\r\n node.extendedData = node.extendedData || {};\r\n node.extendedData.id = node.id;\r\n node.extendedData.label = getPropertyRecordAsString(node.label);\r\n node.extendedData.description = node.description;\r\n if ((node as DelayLoadedTreeNodeItem).hasChildren !== undefined)\r\n node.extendedData.hasChildren = (node as DelayLoadedTreeNodeItem).hasChildren;\r\n if ((node as ImmediatelyLoadedTreeNodeItem).children !== undefined)\r\n node.extendedData.children = (node as ImmediatelyLoadedTreeNodeItem).children;\r\n node.extendedData.dataProvider = treeDataProvider;\r\n node.extendedData.icon = node.icon;\r\n const row: DataRowItem = {\r\n _node: node,\r\n key: node.id,\r\n extendedData: node.extendedData,\r\n isDisabled: false,\r\n colorOverrides: node.style ? node.style.colorOverrides : undefined,\r\n cells,\r\n };\r\n return row;\r\n },\r\n // TODO: implement sorting function\r\n sort: /* istanbul ignore next */ async () => { },\r\n };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface DataRowItem extends RowItem {\r\n _node?: TreeNodeItem;\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function getPropertyRecordAsString(label: PropertyRecord) {\r\n if (label.value.valueFormat === PropertyValueFormat.Primitive)\r\n return label.value.displayValue ?? \"\";\r\n return \"\";\r\n}\r\n"]}
1
+ {"version":3,"file":"BreadcrumbTreeUtils.js","sourceRoot":"","sources":["../../../../src/components-react/breadcrumb/BreadcrumbTreeUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Breadcrumb\r\n */\r\nimport { PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport { CellItem, ColumnDescription, RowItem, TableDataChangeEvent, TableDataProvider } from \"../table/TableDataProvider\";\r\nimport { DelayLoadedTreeNodeItem, hasChildren, ImmediatelyLoadedTreeNodeItem, TreeDataProvider, TreeNodeItem } from \"../tree/TreeDataProvider\";\r\nimport { UiComponents } from \"../UiComponents\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/**\r\n * Utility class for tree searching and manipulation in the Breadcrumb component.\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport class BreadcrumbTreeUtils {\r\n\r\n private static createIcon(node: TreeNodeItem): CellItem {\r\n return {\r\n key: \"icon\", record:\r\n new PropertyRecord(\r\n {\r\n value: hasChildren(node) ? \"icon-folder\" : node.icon,\r\n valueFormat: PropertyValueFormat.Primitive,\r\n displayValue: hasChildren(node) ? \"icon-folder\" : node.icon!,\r\n },\r\n {\r\n name: \"icon\",\r\n displayLabel: UiComponents.translate(\"breadcrumb.icon\"),\r\n typename: \"icon\",\r\n }),\r\n };\r\n }\r\n\r\n private static createLabel(node: TreeNodeItem): CellItem {\r\n return {\r\n key: \"label\",\r\n record: node.label,\r\n };\r\n }\r\n\r\n private static createDescription(node: TreeNodeItem): CellItem {\r\n return {\r\n key: \"description\",\r\n record: new PropertyRecord(\r\n {\r\n value: node.description || \"\",\r\n valueFormat: PropertyValueFormat.Primitive,\r\n displayValue: node.description || \"\",\r\n },\r\n {\r\n name: \"description\",\r\n displayLabel: UiComponents.translate(\"breadcrumb.description\"),\r\n typename: \"text\",\r\n }),\r\n };\r\n }\r\n\r\n /**\r\n * Transforms a list of children from a tree node into a [[TableDataProvider]], given a list of column descriptions.\r\n * @param nodes Node list to use as a basis for the [[TableDataProvider]].\r\n * @param columns An array of column descriptions to specify which columns to provide to the resulting [[TableDataProvider]].\r\n * @returns A [[TableDataProvider]] object that can be used to populate a Table component.\r\n */\r\n public static aliasNodeListToTableDataProvider(nodes: TreeNodeItem[], columns: ColumnDescription[], treeDataProvider?: TreeDataProvider): TableDataProvider {\r\n return {\r\n onColumnsChanged: new TableDataChangeEvent(),\r\n onRowsChanged: new TableDataChangeEvent(),\r\n getColumns: async () => columns,\r\n getRowsCount: async () => nodes.length,\r\n getRow: async (rowIndex: number, _unfiltered?: boolean): Promise<DataRowItem> => {\r\n if (rowIndex < 0 || rowIndex > nodes.length)\r\n return { _node: {} as TreeNodeItem, key: \"\", cells: [] };\r\n\r\n const node = nodes[rowIndex];\r\n\r\n const cells: CellItem[] = [\r\n BreadcrumbTreeUtils.createIcon(node),\r\n BreadcrumbTreeUtils.createLabel(node),\r\n BreadcrumbTreeUtils.createDescription(node),\r\n ];\r\n\r\n for (const key in node.extendedData) {\r\n // only add string values to table cell list\r\n if (node.extendedData.hasOwnProperty(key) && node.extendedData[key] instanceof PropertyRecord) {\r\n cells.push({\r\n key,\r\n record: node.extendedData[key],\r\n style: node.style,\r\n });\r\n } else if (node.extendedData.hasOwnProperty(key) && (typeof node.extendedData[key] === \"string\" || typeof node.extendedData[key] === \"boolean\" || typeof node.extendedData[key] === \"number\")) {\r\n cells.push({\r\n key,\r\n record: new PropertyRecord(\r\n {\r\n value: node.extendedData[key].toString(),\r\n valueFormat: PropertyValueFormat.Primitive,\r\n displayValue: node.extendedData[key].toString(),\r\n },\r\n {\r\n name: key,\r\n displayLabel: key,\r\n typename: \"text\",\r\n }),\r\n style: node.style,\r\n });\r\n }\r\n }\r\n node.extendedData = node.extendedData || {};\r\n node.extendedData.id = node.id;\r\n node.extendedData.label = getPropertyRecordAsString(node.label);\r\n node.extendedData.description = node.description;\r\n if ((node as DelayLoadedTreeNodeItem).hasChildren !== undefined)\r\n node.extendedData.hasChildren = (node as DelayLoadedTreeNodeItem).hasChildren;\r\n if ((node as ImmediatelyLoadedTreeNodeItem).children !== undefined)\r\n node.extendedData.children = (node as ImmediatelyLoadedTreeNodeItem).children;\r\n node.extendedData.dataProvider = treeDataProvider;\r\n node.extendedData.icon = node.icon;\r\n const row: DataRowItem = {\r\n _node: node,\r\n key: node.id,\r\n extendedData: node.extendedData,\r\n isDisabled: false,\r\n colorOverrides: node.style ? node.style.colorOverrides : undefined,\r\n cells,\r\n };\r\n return row;\r\n },\r\n // TODO: implement sorting function\r\n sort: /* istanbul ignore next */ async () => { },\r\n };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface DataRowItem extends RowItem {\r\n _node?: TreeNodeItem;\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function getPropertyRecordAsString(label: PropertyRecord) {\r\n if (label.value.valueFormat === PropertyValueFormat.Primitive)\r\n return label.value.displayValue ?? \"\";\r\n return \"\";\r\n}\r\n"]}
@@ -5,7 +5,7 @@ import * as React from "react";
5
5
  import { GlobalDialogProps } from "@itwin/core-react";
6
6
  import { ShowHideID, ShowHideItem } from "./ShowHideItem";
7
7
  /** Properties for the [[ShowHideDialog]] component used in the [[Table]] to show/hide columns.
8
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
8
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
9
9
  */
10
10
  export interface ShowHideDialogProps<T extends ShowHideID> extends GlobalDialogProps {
11
11
  /** key-label pair list for id's to be shown/hidden, and an accompanying label. */
@@ -21,7 +21,7 @@ interface ShowHideDialogState<T extends ShowHideID> {
21
21
  }
22
22
  /**
23
23
  * [Dialog]($core-react) Component used to toggle show/hide table columns, given through items prop, through a list of checkboxes.
24
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
24
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
25
25
  */
26
26
  export declare class ShowHideDialog<T extends ShowHideID> extends React.PureComponent<ShowHideDialogProps<T>, ShowHideDialogState<T>> {
27
27
  /** @internal */
@@ -35,7 +35,7 @@ const appui_abstract_1 = require("@itwin/appui-abstract");
35
35
  const itwinui_react_1 = require("@itwin/itwinui-react");
36
36
  /**
37
37
  * [Dialog]($core-react) Component used to toggle show/hide table columns, given through items prop, through a list of checkboxes.
38
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
38
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
39
39
  */
40
40
  class ShowHideDialog extends React.PureComponent {
41
41
  constructor(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ShowHideDialog.js","sourceRoot":"","sources":["../../../../../src/components-react/common/showhide/ShowHideDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nimport * as React from \"react\";\r\nimport { GlobalDialog, GlobalDialogProps } from \"@itwin/core-react\";\r\nimport { UiComponents } from \"../../UiComponents\";\r\nimport { ShowHideID, ShowHideItem } from \"./ShowHideItem\";\r\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\n\r\n/** Properties for the [[ShowHideDialog]] component used in the [[Table]] to show/hide columns.\r\n * @public @deprecated will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport interface ShowHideDialogProps<T extends ShowHideID> extends GlobalDialogProps {\r\n /** key-label pair list for id's to be shown/hidden, and an accompanying label. */\r\n items: Array<ShowHideItem<T>>;\r\n /** Hidden list to start with */\r\n initialHidden?: T[];\r\n /** Called when item is shown/hidden */\r\n onShowHideChange?: (cols: T[]) => boolean | undefined;\r\n}\r\n\r\n/** @internal */\r\ninterface ShowHideDialogState<T extends ShowHideID> {\r\n hiddenColumns: T[];\r\n}\r\n\r\n/**\r\n * [Dialog]($core-react) Component used to toggle show/hide table columns, given through items prop, through a list of checkboxes.\r\n * @public @deprecated will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport class ShowHideDialog<T extends ShowHideID> extends React.PureComponent<ShowHideDialogProps<T>, ShowHideDialogState<T>> {\r\n /** @internal */\r\n public override readonly state: ShowHideDialogState<T>;\r\n constructor(props: ShowHideDialogProps<T>) {\r\n super(props);\r\n this.state = {\r\n hiddenColumns: props.initialHidden || [],\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(oldProps: ShowHideDialogProps<T>) {\r\n if (this.props.initialHidden && oldProps.initialHidden !== this.props.initialHidden) {\r\n this.setState((_, props) => ({ hiddenColumns: props.initialHidden || /* istanbul ignore next */[] }));\r\n }\r\n }\r\n\r\n private _toggleItem = (item: ShowHideItem<T>) => {\r\n if (this.state.hiddenColumns.indexOf(item.id) !== -1)\r\n this._show(item);\r\n else\r\n this._hide(item);\r\n };\r\n\r\n private _hide = (item: ShowHideItem<T>) => {\r\n this.setState(\r\n (prevState) => ({ hiddenColumns: [...prevState.hiddenColumns, item.id] }),\r\n () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n private _show = (item: ShowHideItem<T>) => {\r\n const hiddenColumns = this.state.hiddenColumns.filter((value) => {\r\n return value !== item.id;\r\n });\r\n\r\n this.setState({ hiddenColumns }, () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { opened, items, initialHidden, onClose, onShowHideChange, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n return (\r\n <GlobalDialog\r\n opened={opened}\r\n resizable={true}\r\n movable={true}\r\n modal={false}\r\n minWidth={300}\r\n minHeight={250}\r\n width={300}\r\n onClose={onClose}\r\n onEscape={onClose}\r\n onOutsideClick={onClose}\r\n buttonCluster={onClose && [{ onClick: onClose, type: DialogButtonType.Close }]}\r\n {...props}>\r\n {this.props.items.map((item, index) => {\r\n const visible = this.state.hiddenColumns.indexOf(item.id) === -1;\r\n const sel = () => {\r\n this._toggleItem(item);\r\n };\r\n const label = item.label || UiComponents.translate(\"showhide.noLabel\");\r\n const id = `show-hide-dialog-input-${index}`;\r\n return (\r\n <div key={index}>\r\n <Checkbox data-testid={id} id={id} checked={visible} onChange={() => undefined} onClick={sel} />\r\n <label htmlFor={id}>{label}</label>\r\n </div>\r\n );\r\n })}\r\n </GlobalDialog>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ShowHideDialog.js","sourceRoot":"","sources":["../../../../../src/components-react/common/showhide/ShowHideDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nimport * as React from \"react\";\r\nimport { GlobalDialog, GlobalDialogProps } from \"@itwin/core-react\";\r\nimport { UiComponents } from \"../../UiComponents\";\r\nimport { ShowHideID, ShowHideItem } from \"./ShowHideItem\";\r\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\n\r\n/** Properties for the [[ShowHideDialog]] component used in the [[Table]] to show/hide columns.\r\n * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport interface ShowHideDialogProps<T extends ShowHideID> extends GlobalDialogProps {\r\n /** key-label pair list for id's to be shown/hidden, and an accompanying label. */\r\n items: Array<ShowHideItem<T>>;\r\n /** Hidden list to start with */\r\n initialHidden?: T[];\r\n /** Called when item is shown/hidden */\r\n onShowHideChange?: (cols: T[]) => boolean | undefined;\r\n}\r\n\r\n/** @internal */\r\ninterface ShowHideDialogState<T extends ShowHideID> {\r\n hiddenColumns: T[];\r\n}\r\n\r\n/**\r\n * [Dialog]($core-react) Component used to toggle show/hide table columns, given through items prop, through a list of checkboxes.\r\n * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport class ShowHideDialog<T extends ShowHideID> extends React.PureComponent<ShowHideDialogProps<T>, ShowHideDialogState<T>> {\r\n /** @internal */\r\n public override readonly state: ShowHideDialogState<T>;\r\n constructor(props: ShowHideDialogProps<T>) {\r\n super(props);\r\n this.state = {\r\n hiddenColumns: props.initialHidden || [],\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(oldProps: ShowHideDialogProps<T>) {\r\n if (this.props.initialHidden && oldProps.initialHidden !== this.props.initialHidden) {\r\n this.setState((_, props) => ({ hiddenColumns: props.initialHidden || /* istanbul ignore next */[] }));\r\n }\r\n }\r\n\r\n private _toggleItem = (item: ShowHideItem<T>) => {\r\n if (this.state.hiddenColumns.indexOf(item.id) !== -1)\r\n this._show(item);\r\n else\r\n this._hide(item);\r\n };\r\n\r\n private _hide = (item: ShowHideItem<T>) => {\r\n this.setState(\r\n (prevState) => ({ hiddenColumns: [...prevState.hiddenColumns, item.id] }),\r\n () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n private _show = (item: ShowHideItem<T>) => {\r\n const hiddenColumns = this.state.hiddenColumns.filter((value) => {\r\n return value !== item.id;\r\n });\r\n\r\n this.setState({ hiddenColumns }, () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { opened, items, initialHidden, onClose, onShowHideChange, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n return (\r\n <GlobalDialog\r\n opened={opened}\r\n resizable={true}\r\n movable={true}\r\n modal={false}\r\n minWidth={300}\r\n minHeight={250}\r\n width={300}\r\n onClose={onClose}\r\n onEscape={onClose}\r\n onOutsideClick={onClose}\r\n buttonCluster={onClose && [{ onClick: onClose, type: DialogButtonType.Close }]}\r\n {...props}>\r\n {this.props.items.map((item, index) => {\r\n const visible = this.state.hiddenColumns.indexOf(item.id) === -1;\r\n const sel = () => {\r\n this._toggleItem(item);\r\n };\r\n const label = item.label || UiComponents.translate(\"showhide.noLabel\");\r\n const id = `show-hide-dialog-input-${index}`;\r\n return (\r\n <div key={index}>\r\n <Checkbox data-testid={id} id={id} checked={visible} onChange={() => undefined} onClick={sel} />\r\n <label htmlFor={id}>{label}</label>\r\n </div>\r\n );\r\n })}\r\n </GlobalDialog>\r\n );\r\n }\r\n}\r\n"]}
@@ -2,14 +2,14 @@
2
2
  * @module Common
3
3
  */
4
4
  /** Interface for ShowHide items used to show/hide [[Table]] columns.
5
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
5
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
6
6
  */
7
7
  export interface ShowHideItem<T extends ShowHideID> {
8
8
  id: T;
9
9
  label: string;
10
10
  }
11
11
  /** Union type for all possible ShowHide IDs
12
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
12
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
13
13
  */
14
14
  export declare type ShowHideID = string | number | symbol;
15
15
  //# sourceMappingURL=ShowHideItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowHideItem.js","sourceRoot":"","sources":["../../../../../src/components-react/common/showhide/ShowHideItem.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** Interface for ShowHide items used to show/hide [[Table]] columns.\r\n * @public @deprecated will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport interface ShowHideItem<T extends ShowHideID> {\r\n id: T;\r\n label: string;\r\n}\r\n\r\n/** Union type for all possible ShowHide IDs\r\n * @public @deprecated will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport type ShowHideID = string | number | symbol;\r\n"]}
1
+ {"version":3,"file":"ShowHideItem.js","sourceRoot":"","sources":["../../../../../src/components-react/common/showhide/ShowHideItem.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** Interface for ShowHide items used to show/hide [[Table]] columns.\r\n * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport interface ShowHideItem<T extends ShowHideID> {\r\n id: T;\r\n label: string;\r\n}\r\n\r\n/** Union type for all possible ShowHide IDs\r\n * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport type ShowHideID = string | number | symbol;\r\n"]}
@@ -5,7 +5,7 @@ import * as React from "react";
5
5
  import { GlobalContextMenuProps } from "@itwin/core-react";
6
6
  import { ShowHideID, ShowHideItem } from "./ShowHideItem";
7
7
  /** Properties for the [[ShowHideMenu]] component
8
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
8
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
9
9
  */
10
10
  export interface ShowHideMenuProps<T extends ShowHideID> extends GlobalContextMenuProps {
11
11
  /** key-label pair list for id's to be shown/hidden, and an accompanying label. */
@@ -31,7 +31,7 @@ interface ShowHideMenuState<T extends ShowHideID> {
31
31
  /**
32
32
  * [ContextMenu]($core-react) Component used to toggle show/hide items, given through items prop, through a list of checkboxes.
33
33
  * Component includes a "list" button that displays a dialog with the same checkboxes.
34
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
34
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
35
35
  */
36
36
  export declare class ShowHideMenu<T extends ShowHideID> extends React.PureComponent<ShowHideMenuProps<T>, ShowHideMenuState<T>> {
37
37
  /** @internal */
@@ -36,7 +36,7 @@ const itwinui_react_1 = require("@itwin/itwinui-react");
36
36
  /**
37
37
  * [ContextMenu]($core-react) Component used to toggle show/hide items, given through items prop, through a list of checkboxes.
38
38
  * Component includes a "list" button that displays a dialog with the same checkboxes.
39
- * @public @deprecated will be removed when deprecated [[Table]] component is removed.
39
+ * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.
40
40
  */
41
41
  class ShowHideMenu extends React.PureComponent {
42
42
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"ShowHideMenu.js","sourceRoot":"","sources":["../../../../../src/components-react/common/showhide/ShowHideMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nimport * as React from \"react\";\r\nimport { ContextMenuDivider, ContextMenuItem, GlobalContextMenu, GlobalContextMenuProps } from \"@itwin/core-react\";\r\nimport { UiComponents } from \"../../UiComponents\";\r\nimport { ShowHideDialog } from \"./ShowHideDialog\";\r\nimport { ShowHideID, ShowHideItem } from \"./ShowHideItem\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\n\r\n/** Properties for the [[ShowHideMenu]] component\r\n * @public @deprecated will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport interface ShowHideMenuProps<T extends ShowHideID> extends GlobalContextMenuProps {\r\n /** key-label pair list for id's to be shown/hidden, and an accompanying label. */\r\n items: Array<ShowHideItem<T>>;\r\n /** X position to place menu */\r\n x: number;\r\n /** Y position to place menu */\r\n y: number;\r\n /** Whether dialog is opened or closed */\r\n opened: boolean;\r\n /** Hidden list to start with */\r\n initialHidden?: T[];\r\n /** Called when close button is clicked */\r\n onClose?: () => void;\r\n /** Called when item is shown/hidden */\r\n onShowHideChange?: (cols: T[]) => boolean | undefined;\r\n}\r\n\r\n/** @internal */\r\ninterface ShowHideMenuState<T extends ShowHideID> {\r\n hiddenColumns: T[];\r\n dialogOpened: boolean;\r\n}\r\n\r\n/**\r\n * [ContextMenu]($core-react) Component used to toggle show/hide items, given through items prop, through a list of checkboxes.\r\n * Component includes a \"list\" button that displays a dialog with the same checkboxes.\r\n * @public @deprecated will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport class ShowHideMenu<T extends ShowHideID> extends React.PureComponent<ShowHideMenuProps<T>, ShowHideMenuState<T>> {\r\n /** @internal */\r\n public override readonly state: ShowHideMenuState<T>;\r\n\r\n /** @internal */\r\n constructor(props: ShowHideMenuProps<T>) {\r\n super(props);\r\n this.state = {\r\n hiddenColumns: props.initialHidden || [],\r\n dialogOpened: false,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(oldProps: ShowHideMenuProps<T>) {\r\n if (this.props.initialHidden && oldProps.initialHidden !== this.props.initialHidden) {\r\n this.setState((_, props) => ({ hiddenColumns: props.initialHidden || /* istanbul ignore next */[] }));\r\n }\r\n }\r\n\r\n private _toggleItem = (item: ShowHideItem<T>) => {\r\n if (this.state.hiddenColumns.indexOf(item.id) !== -1)\r\n this._show(item);\r\n else\r\n this._hide(item);\r\n if (this.props.onClose)\r\n this.props.onClose();\r\n };\r\n\r\n private _hide = (item: ShowHideItem<T>) => {\r\n this.setState(\r\n (prevState) => ({ hiddenColumns: [...prevState.hiddenColumns, item.id] }),\r\n () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n private _show = (item: ShowHideItem<T>) => {\r\n const hiddenColumns = this.state.hiddenColumns.filter((value) => {\r\n return value !== item.id;\r\n });\r\n\r\n this.setState({ hiddenColumns }, () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n private _showAll = () => {\r\n this.setState({ hiddenColumns: [] }, () => {\r\n // istanbul ignore next\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n if (this.props.onClose)\r\n this.props.onClose();\r\n };\r\n private _showDialog = () => {\r\n if (this.props.onClose)\r\n this.props.onClose();\r\n this.setState({\r\n dialogOpened: true,\r\n });\r\n };\r\n\r\n private _closeDialog = () => {\r\n this.setState({\r\n dialogOpened: false,\r\n });\r\n };\r\n\r\n private _defaultContextMenu = (event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { items, x, y, opened, initialHidden, onClose, onShowHideChange, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n return (\r\n <GlobalContextMenu\r\n x={x}\r\n y={y}\r\n opened={opened}\r\n onEsc={onClose}\r\n onOutsideClick={onClose}\r\n edgeLimit={false}\r\n autoflip={true}\r\n {...props}>\r\n {this.props.items.map((item, index) => {\r\n const visible = this.state.hiddenColumns.indexOf(item.id) === -1;\r\n const sel = () => this._toggleItem(item);\r\n const label = item.label || UiComponents.translate(\"showhide.noLabel\");\r\n const id = `show-hide-menu-input-${index}`;\r\n return (\r\n <ContextMenuItem key={index}\r\n onSelect={sel}\r\n icon={<Checkbox data-testid={id} id={id} checked={visible} onChange={() => undefined} />} >\r\n {label}\r\n </ContextMenuItem>\r\n );\r\n })}\r\n <ContextMenuDivider />\r\n <ContextMenuItem onSelect={this._showAll}><span data-testid=\"show-hide-showall\">{UiComponents.translate(\"showhide.showAll\")}</span></ContextMenuItem>\r\n <ContextMenuItem onSelect={this._showDialog}><span data-testid=\"show-hide-list\">{UiComponents.translate(\"showhide.list\")}</span></ContextMenuItem>\r\n <ShowHideDialog\r\n items={items}\r\n title={UiComponents.translate(\"showhide.title\")}\r\n opened={this.state.dialogOpened}\r\n onClose={this._closeDialog}\r\n initialHidden={this.state.hiddenColumns}\r\n onContextMenu={this._defaultContextMenu}\r\n onShowHideChange={onShowHideChange} />\r\n </GlobalContextMenu>\r\n );\r\n }\r\n}\r\n\r\n// cspell:ignore showall\r\n"]}
1
+ {"version":3,"file":"ShowHideMenu.js","sourceRoot":"","sources":["../../../../../src/components-react/common/showhide/ShowHideMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nimport * as React from \"react\";\r\nimport { ContextMenuDivider, ContextMenuItem, GlobalContextMenu, GlobalContextMenuProps } from \"@itwin/core-react\";\r\nimport { UiComponents } from \"../../UiComponents\";\r\nimport { ShowHideDialog } from \"./ShowHideDialog\";\r\nimport { ShowHideID, ShowHideItem } from \"./ShowHideItem\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\n\r\n/** Properties for the [[ShowHideMenu]] component\r\n * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport interface ShowHideMenuProps<T extends ShowHideID> extends GlobalContextMenuProps {\r\n /** key-label pair list for id's to be shown/hidden, and an accompanying label. */\r\n items: Array<ShowHideItem<T>>;\r\n /** X position to place menu */\r\n x: number;\r\n /** Y position to place menu */\r\n y: number;\r\n /** Whether dialog is opened or closed */\r\n opened: boolean;\r\n /** Hidden list to start with */\r\n initialHidden?: T[];\r\n /** Called when close button is clicked */\r\n onClose?: () => void;\r\n /** Called when item is shown/hidden */\r\n onShowHideChange?: (cols: T[]) => boolean | undefined;\r\n}\r\n\r\n/** @internal */\r\ninterface ShowHideMenuState<T extends ShowHideID> {\r\n hiddenColumns: T[];\r\n dialogOpened: boolean;\r\n}\r\n\r\n/**\r\n * [ContextMenu]($core-react) Component used to toggle show/hide items, given through items prop, through a list of checkboxes.\r\n * Component includes a \"list\" button that displays a dialog with the same checkboxes.\r\n * @public @deprecated in 3.2. Will be removed when deprecated [[Table]] component is removed.\r\n */\r\nexport class ShowHideMenu<T extends ShowHideID> extends React.PureComponent<ShowHideMenuProps<T>, ShowHideMenuState<T>> {\r\n /** @internal */\r\n public override readonly state: ShowHideMenuState<T>;\r\n\r\n /** @internal */\r\n constructor(props: ShowHideMenuProps<T>) {\r\n super(props);\r\n this.state = {\r\n hiddenColumns: props.initialHidden || [],\r\n dialogOpened: false,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(oldProps: ShowHideMenuProps<T>) {\r\n if (this.props.initialHidden && oldProps.initialHidden !== this.props.initialHidden) {\r\n this.setState((_, props) => ({ hiddenColumns: props.initialHidden || /* istanbul ignore next */[] }));\r\n }\r\n }\r\n\r\n private _toggleItem = (item: ShowHideItem<T>) => {\r\n if (this.state.hiddenColumns.indexOf(item.id) !== -1)\r\n this._show(item);\r\n else\r\n this._hide(item);\r\n if (this.props.onClose)\r\n this.props.onClose();\r\n };\r\n\r\n private _hide = (item: ShowHideItem<T>) => {\r\n this.setState(\r\n (prevState) => ({ hiddenColumns: [...prevState.hiddenColumns, item.id] }),\r\n () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n private _show = (item: ShowHideItem<T>) => {\r\n const hiddenColumns = this.state.hiddenColumns.filter((value) => {\r\n return value !== item.id;\r\n });\r\n\r\n this.setState({ hiddenColumns }, () => {\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n };\r\n\r\n private _showAll = () => {\r\n this.setState({ hiddenColumns: [] }, () => {\r\n // istanbul ignore next\r\n if (this.props.onShowHideChange)\r\n this.props.onShowHideChange(this.state.hiddenColumns);\r\n });\r\n if (this.props.onClose)\r\n this.props.onClose();\r\n };\r\n private _showDialog = () => {\r\n if (this.props.onClose)\r\n this.props.onClose();\r\n this.setState({\r\n dialogOpened: true,\r\n });\r\n };\r\n\r\n private _closeDialog = () => {\r\n this.setState({\r\n dialogOpened: false,\r\n });\r\n };\r\n\r\n private _defaultContextMenu = (event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { items, x, y, opened, initialHidden, onClose, onShowHideChange, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n return (\r\n <GlobalContextMenu\r\n x={x}\r\n y={y}\r\n opened={opened}\r\n onEsc={onClose}\r\n onOutsideClick={onClose}\r\n edgeLimit={false}\r\n autoflip={true}\r\n {...props}>\r\n {this.props.items.map((item, index) => {\r\n const visible = this.state.hiddenColumns.indexOf(item.id) === -1;\r\n const sel = () => this._toggleItem(item);\r\n const label = item.label || UiComponents.translate(\"showhide.noLabel\");\r\n const id = `show-hide-menu-input-${index}`;\r\n return (\r\n <ContextMenuItem key={index}\r\n onSelect={sel}\r\n icon={<Checkbox data-testid={id} id={id} checked={visible} onChange={() => undefined} />} >\r\n {label}\r\n </ContextMenuItem>\r\n );\r\n })}\r\n <ContextMenuDivider />\r\n <ContextMenuItem onSelect={this._showAll}><span data-testid=\"show-hide-showall\">{UiComponents.translate(\"showhide.showAll\")}</span></ContextMenuItem>\r\n <ContextMenuItem onSelect={this._showDialog}><span data-testid=\"show-hide-list\">{UiComponents.translate(\"showhide.list\")}</span></ContextMenuItem>\r\n <ShowHideDialog\r\n items={items}\r\n title={UiComponents.translate(\"showhide.title\")}\r\n opened={this.state.dialogOpened}\r\n onClose={this._closeDialog}\r\n initialHidden={this.state.hiddenColumns}\r\n onContextMenu={this._defaultContextMenu}\r\n onShowHideChange={onShowHideChange} />\r\n </GlobalContextMenu>\r\n );\r\n }\r\n}\r\n\r\n// cspell:ignore showall\r\n"]}
@@ -8,7 +8,7 @@ import { OptionType } from "@itwin/core-react";
8
8
  import { PropertyEditorProps, TypeEditor } from "./EditorContainer";
9
9
  import { PropertyEditorBase } from "./PropertyEditorManager";
10
10
  /** Properties for [[EnumEditor]] component
11
- * @beta @deprecated
11
+ * @beta @deprecated in 3.0.
12
12
  */
13
13
  export interface ThemedEnumEditorProps extends PropertyEditorProps {
14
14
  /** Allow searching in enum list */
@@ -27,7 +27,7 @@ interface EnumEditorState {
27
27
  options: OptionType[] | undefined;
28
28
  }
29
29
  /** EnumEditor React component that is a property editor with select input
30
- * @beta @deprecated
30
+ * @beta @deprecated in 3.0.
31
31
  */
32
32
  export declare class ThemedEnumEditor extends React.PureComponent<ThemedEnumEditorProps, EnumEditorState> implements TypeEditor {
33
33
  private _isMounted;
@@ -50,7 +50,7 @@ export declare class ThemedEnumEditor extends React.PureComponent<ThemedEnumEdit
50
50
  }
51
51
  /** Enum Property Button Group Editor registered for the "enum" type name.
52
52
  * It uses the [[EnumEditor]] React component.
53
- * @beta @deprecated
53
+ * @beta @deprecated in 3.0.
54
54
  */
55
55
  export declare class ThemedEnumPropertyEditor extends PropertyEditorBase {
56
56
  get containerHandlesBlur(): boolean;
@@ -38,7 +38,7 @@ const appui_abstract_1 = require("@itwin/appui-abstract");
38
38
  const core_react_1 = require("@itwin/core-react");
39
39
  const PropertyEditorManager_1 = require("./PropertyEditorManager");
40
40
  /** EnumEditor React component that is a property editor with select input
41
- * @beta @deprecated
41
+ * @beta @deprecated in 3.0.
42
42
  */
43
43
  class ThemedEnumEditor extends React.PureComponent {
44
44
  constructor() {
@@ -178,7 +178,7 @@ class ThemedEnumEditor extends React.PureComponent {
178
178
  exports.ThemedEnumEditor = ThemedEnumEditor;
179
179
  /** Enum Property Button Group Editor registered for the "enum" type name.
180
180
  * It uses the [[EnumEditor]] React component.
181
- * @beta @deprecated
181
+ * @beta @deprecated in 3.0.
182
182
  */
183
183
  class ThemedEnumPropertyEditor extends PropertyEditorManager_1.PropertyEditorBase {
184
184
  // istanbul ignore next
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedEnumEditor.js","sourceRoot":"","sources":["../../../../src/components-react/editors/ThemedEnumEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module PropertyEditors\r\n */\r\n\r\nimport \"./ThemedEnumEditor.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { EnumerationChoice, PropertyValue, PropertyValueFormat, StandardEditorNames, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { OptionType, ThemedSelect } from \"@itwin/core-react\";\r\nimport { PropertyEditorProps, TypeEditor } from \"./EditorContainer\";\r\nimport { PropertyEditorBase, PropertyEditorManager } from \"./PropertyEditorManager\";\r\nimport { ActionMeta, ValueType } from \"react-select/src/types\";\r\n\r\n/** Properties for [[EnumEditor]] component\r\n * @beta @deprecated\r\n */\r\nexport interface ThemedEnumEditorProps extends PropertyEditorProps {\r\n /** Allow searching in enum list */\r\n isSearchable?: boolean;\r\n /** The prompt string used when no enum member has been selected */\r\n placeholder?: string;\r\n /** The function to return an error message used when the search string can't be found in the list */\r\n noOptionsMessage?: (obj: { inputValue: string }) => string | null;\r\n}\r\n/** @internal */\r\ninterface EnumEditorState {\r\n selectValue: string | number;\r\n valueIsNumber: boolean;\r\n options: OptionType[] | undefined;\r\n}\r\n\r\n/** EnumEditor React component that is a property editor with select input\r\n * @beta @deprecated\r\n */\r\nexport class ThemedEnumEditor extends React.PureComponent<ThemedEnumEditorProps, EnumEditorState> implements TypeEditor {\r\n private _isMounted = false;\r\n private _divElement = React.createRef<HTMLDivElement>();\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<EnumEditorState> = {\r\n selectValue: \"\",\r\n valueIsNumber: false,\r\n options: undefined,\r\n };\r\n\r\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\r\n const record = this.props.propertyRecord;\r\n let propertyValue: PropertyValue | undefined;\r\n\r\n // istanbul ignore else\r\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\r\n propertyValue = {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: this.state.selectValue,\r\n displayValue: \"\",\r\n };\r\n }\r\n\r\n return propertyValue;\r\n }\r\n\r\n // istanbul ignore next\r\n public get htmlElement(): HTMLElement | null {\r\n return this._divElement.current;\r\n }\r\n\r\n // istanbul ignore next\r\n public get hasFocus(): boolean {\r\n let containsFocus = false;\r\n // istanbul ignore else\r\n if (this._divElement.current)\r\n containsFocus = this._divElement.current.contains(document.activeElement);\r\n return containsFocus;\r\n }\r\n\r\n private _updateSelectValue = (value: ValueType<OptionType>, action: ActionMeta<OptionType>) => {\r\n // istanbul ignore else\r\n if (this._isMounted && action.action === \"select-option\" && value) {\r\n let selectValue: string | number;\r\n const selectedOption: OptionType = value as OptionType;\r\n // istanbul ignore next\r\n if (selectedOption === undefined) // no multi-select allowed\r\n return;\r\n\r\n if (this.state.valueIsNumber)\r\n selectValue = parseInt(selectedOption.value, 10);\r\n else\r\n selectValue = selectedOption.value;\r\n\r\n this.setState({\r\n selectValue,\r\n }, async () => {\r\n // istanbul ignore else\r\n if (this.props.propertyRecord && this.props.onCommit) {\r\n const propertyValue = await this.getPropertyValue();\r\n // istanbul ignore else\r\n if (propertyValue) {\r\n this.props.onCommit({ propertyRecord: this.props.propertyRecord, newValue: propertyValue });\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._isMounted = true;\r\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\r\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\r\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n }\r\n\r\n private async setStateFromProps() {\r\n const { propertyRecord } = this.props;\r\n let initialValue: string | number = \"\";\r\n let valueIsNumber: boolean = false;\r\n let choices: EnumerationChoice[] | undefined;\r\n\r\n if (propertyRecord && propertyRecord.property.enum) {\r\n // istanbul ignore else\r\n if (propertyRecord.property.enum.choices instanceof Promise) {\r\n choices = await propertyRecord.property.enum.choices;\r\n } else {\r\n choices = propertyRecord.property.enum.choices;\r\n }\r\n }\r\n\r\n let options: OptionType[] = [];\r\n if (this.state.options === undefined) {\r\n if (choices) {\r\n choices.forEach((choice: EnumerationChoice) => {\r\n options.push({ value: choice.value.toString(), label: choice.label });\r\n });\r\n }\r\n } else {\r\n options = this.state.options;\r\n }\r\n\r\n // istanbul ignore else\r\n if (propertyRecord && propertyRecord.value.valueFormat === PropertyValueFormat.Primitive) {\r\n const primitiveValue = propertyRecord.value.value;\r\n if (typeof primitiveValue === \"string\") {\r\n initialValue = primitiveValue;\r\n valueIsNumber = false;\r\n } else {\r\n initialValue = primitiveValue as number;\r\n valueIsNumber = true;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ selectValue: initialValue, valueIsNumber, options });\r\n }\r\n\r\n /** @internal */\r\n public override render() {\r\n const className = classnames(\"components-cell-editor\", \"components-enum-editor\", this.props.className);\r\n const selectValue = this.state.selectValue ? this.state.selectValue.toString() : undefined;\r\n const options = this.state.options === undefined ? [] : this.state.options;\r\n const selectedOption = options.find((e) => e.value === selectValue);\r\n const { isSearchable, placeholder, noOptionsMessage } = this.props;\r\n // set min-width to show about 4 characters + down arrow\r\n const minWidthStyle: React.CSSProperties = {\r\n minWidth: `${6 * 0.75}em`,\r\n };\r\n\r\n return (\r\n <ThemedSelect\r\n divRef={this._divElement}\r\n className={className}\r\n value={selectedOption}\r\n onChange={this._updateSelectValue}\r\n data-testid=\"components-select-editor\"\r\n styles={this.props.style ? this.props.style : minWidthStyle}\r\n isSearchable={isSearchable}\r\n placeholder={placeholder}\r\n noOptionsMessage={noOptionsMessage}\r\n isMulti={false}\r\n // eslint-disable-next-line jsx-a11y/no-autofocus\r\n autoFocus={this.props.setFocus}\r\n options={options} />\r\n );\r\n }\r\n}\r\n\r\n/** Enum Property Button Group Editor registered for the \"enum\" type name.\r\n * It uses the [[EnumEditor]] React component.\r\n * @beta @deprecated\r\n */\r\nexport class ThemedEnumPropertyEditor extends PropertyEditorBase {\r\n\r\n // istanbul ignore next\r\n public override get containerHandlesBlur(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public override get containerHandlesEscape(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public override get containerHandlesEnter(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public override get containerHandlesTab(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public get reactNode(): React.ReactNode {\r\n return <ThemedEnumEditor />;\r\n }\r\n}\r\n\r\nPropertyEditorManager.registerEditor(StandardTypeNames.Enum, ThemedEnumPropertyEditor, StandardEditorNames.ThemedEnum);\r\n"]}
1
+ {"version":3,"file":"ThemedEnumEditor.js","sourceRoot":"","sources":["../../../../src/components-react/editors/ThemedEnumEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module PropertyEditors\r\n */\r\n\r\nimport \"./ThemedEnumEditor.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { EnumerationChoice, PropertyValue, PropertyValueFormat, StandardEditorNames, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { OptionType, ThemedSelect } from \"@itwin/core-react\";\r\nimport { PropertyEditorProps, TypeEditor } from \"./EditorContainer\";\r\nimport { PropertyEditorBase, PropertyEditorManager } from \"./PropertyEditorManager\";\r\nimport { ActionMeta, ValueType } from \"react-select/src/types\";\r\n\r\n/** Properties for [[EnumEditor]] component\r\n * @beta @deprecated in 3.0.\r\n */\r\nexport interface ThemedEnumEditorProps extends PropertyEditorProps {\r\n /** Allow searching in enum list */\r\n isSearchable?: boolean;\r\n /** The prompt string used when no enum member has been selected */\r\n placeholder?: string;\r\n /** The function to return an error message used when the search string can't be found in the list */\r\n noOptionsMessage?: (obj: { inputValue: string }) => string | null;\r\n}\r\n/** @internal */\r\ninterface EnumEditorState {\r\n selectValue: string | number;\r\n valueIsNumber: boolean;\r\n options: OptionType[] | undefined;\r\n}\r\n\r\n/** EnumEditor React component that is a property editor with select input\r\n * @beta @deprecated in 3.0.\r\n */\r\nexport class ThemedEnumEditor extends React.PureComponent<ThemedEnumEditorProps, EnumEditorState> implements TypeEditor {\r\n private _isMounted = false;\r\n private _divElement = React.createRef<HTMLDivElement>();\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<EnumEditorState> = {\r\n selectValue: \"\",\r\n valueIsNumber: false,\r\n options: undefined,\r\n };\r\n\r\n public async getPropertyValue(): Promise<PropertyValue | undefined> {\r\n const record = this.props.propertyRecord;\r\n let propertyValue: PropertyValue | undefined;\r\n\r\n // istanbul ignore else\r\n if (record && record.value.valueFormat === PropertyValueFormat.Primitive) {\r\n propertyValue = {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: this.state.selectValue,\r\n displayValue: \"\",\r\n };\r\n }\r\n\r\n return propertyValue;\r\n }\r\n\r\n // istanbul ignore next\r\n public get htmlElement(): HTMLElement | null {\r\n return this._divElement.current;\r\n }\r\n\r\n // istanbul ignore next\r\n public get hasFocus(): boolean {\r\n let containsFocus = false;\r\n // istanbul ignore else\r\n if (this._divElement.current)\r\n containsFocus = this._divElement.current.contains(document.activeElement);\r\n return containsFocus;\r\n }\r\n\r\n private _updateSelectValue = (value: ValueType<OptionType>, action: ActionMeta<OptionType>) => {\r\n // istanbul ignore else\r\n if (this._isMounted && action.action === \"select-option\" && value) {\r\n let selectValue: string | number;\r\n const selectedOption: OptionType = value as OptionType;\r\n // istanbul ignore next\r\n if (selectedOption === undefined) // no multi-select allowed\r\n return;\r\n\r\n if (this.state.valueIsNumber)\r\n selectValue = parseInt(selectedOption.value, 10);\r\n else\r\n selectValue = selectedOption.value;\r\n\r\n this.setState({\r\n selectValue,\r\n }, async () => {\r\n // istanbul ignore else\r\n if (this.props.propertyRecord && this.props.onCommit) {\r\n const propertyValue = await this.getPropertyValue();\r\n // istanbul ignore else\r\n if (propertyValue) {\r\n this.props.onCommit({ propertyRecord: this.props.propertyRecord, newValue: propertyValue });\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._isMounted = true;\r\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: PropertyEditorProps) {\r\n if (this.props.propertyRecord !== prevProps.propertyRecord) {\r\n this.setStateFromProps(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n }\r\n\r\n private async setStateFromProps() {\r\n const { propertyRecord } = this.props;\r\n let initialValue: string | number = \"\";\r\n let valueIsNumber: boolean = false;\r\n let choices: EnumerationChoice[] | undefined;\r\n\r\n if (propertyRecord && propertyRecord.property.enum) {\r\n // istanbul ignore else\r\n if (propertyRecord.property.enum.choices instanceof Promise) {\r\n choices = await propertyRecord.property.enum.choices;\r\n } else {\r\n choices = propertyRecord.property.enum.choices;\r\n }\r\n }\r\n\r\n let options: OptionType[] = [];\r\n if (this.state.options === undefined) {\r\n if (choices) {\r\n choices.forEach((choice: EnumerationChoice) => {\r\n options.push({ value: choice.value.toString(), label: choice.label });\r\n });\r\n }\r\n } else {\r\n options = this.state.options;\r\n }\r\n\r\n // istanbul ignore else\r\n if (propertyRecord && propertyRecord.value.valueFormat === PropertyValueFormat.Primitive) {\r\n const primitiveValue = propertyRecord.value.value;\r\n if (typeof primitiveValue === \"string\") {\r\n initialValue = primitiveValue;\r\n valueIsNumber = false;\r\n } else {\r\n initialValue = primitiveValue as number;\r\n valueIsNumber = true;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ selectValue: initialValue, valueIsNumber, options });\r\n }\r\n\r\n /** @internal */\r\n public override render() {\r\n const className = classnames(\"components-cell-editor\", \"components-enum-editor\", this.props.className);\r\n const selectValue = this.state.selectValue ? this.state.selectValue.toString() : undefined;\r\n const options = this.state.options === undefined ? [] : this.state.options;\r\n const selectedOption = options.find((e) => e.value === selectValue);\r\n const { isSearchable, placeholder, noOptionsMessage } = this.props;\r\n // set min-width to show about 4 characters + down arrow\r\n const minWidthStyle: React.CSSProperties = {\r\n minWidth: `${6 * 0.75}em`,\r\n };\r\n\r\n return (\r\n <ThemedSelect\r\n divRef={this._divElement}\r\n className={className}\r\n value={selectedOption}\r\n onChange={this._updateSelectValue}\r\n data-testid=\"components-select-editor\"\r\n styles={this.props.style ? this.props.style : minWidthStyle}\r\n isSearchable={isSearchable}\r\n placeholder={placeholder}\r\n noOptionsMessage={noOptionsMessage}\r\n isMulti={false}\r\n // eslint-disable-next-line jsx-a11y/no-autofocus\r\n autoFocus={this.props.setFocus}\r\n options={options} />\r\n );\r\n }\r\n}\r\n\r\n/** Enum Property Button Group Editor registered for the \"enum\" type name.\r\n * It uses the [[EnumEditor]] React component.\r\n * @beta @deprecated in 3.0.\r\n */\r\nexport class ThemedEnumPropertyEditor extends PropertyEditorBase {\r\n\r\n // istanbul ignore next\r\n public override get containerHandlesBlur(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public override get containerHandlesEscape(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public override get containerHandlesEnter(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public override get containerHandlesTab(): boolean {\r\n return false;\r\n }\r\n // istanbul ignore next\r\n public get reactNode(): React.ReactNode {\r\n return <ThemedEnumEditor />;\r\n }\r\n}\r\n\r\nPropertyEditorManager.registerEditor(StandardTypeNames.Enum, ThemedEnumPropertyEditor, StandardEditorNames.ThemedEnum);\r\n"]}
@@ -1,41 +1,38 @@
1
+ /** @packageDocumentation
2
+ * @module PropertyFilterBuilder
3
+ */
1
4
  import * as React from "react";
2
5
  import { PropertyDescription } from "@itwin/appui-abstract";
3
6
  import { PropertyFilterBuilderRuleOperatorProps } from "./FilterBuilderRuleOperator";
4
7
  import { PropertyFilterBuilderRuleValueProps } from "./FilterBuilderRuleValue";
5
- import { PropertyFilterBuilderActions, PropertyFilterBuilderRuleGroupItem } from "./FilterBuilderState";
6
8
  import { PropertyFilter } from "./Types";
7
- /** @alpha */
9
+ /**
10
+ * Props for [[PropertyFilterBuilder]] component.
11
+ * @beta
12
+ */
8
13
  export interface PropertyFilterBuilderProps {
14
+ /** List of properties available to be used in filter rules. */
9
15
  properties: PropertyDescription[];
16
+ /** Callback that is invoked when filter changes. */
10
17
  onFilterChanged: (filter?: PropertyFilter) => void;
18
+ /** Callback that is invoked when property is selected in any rule. */
11
19
  onRulePropertySelected?: (property: PropertyDescription) => void;
20
+ /** Custom renderer for rule operator selector. */
12
21
  ruleOperatorRenderer?: (props: PropertyFilterBuilderRuleOperatorProps) => React.ReactNode;
22
+ /** Custom renderer for rule value input. */
13
23
  ruleValueRenderer?: (props: PropertyFilterBuilderRuleValueProps) => React.ReactNode;
14
- ruleGroupDepthLimit?: number;
24
+ /** Custom renderer for property selector in rule. */
15
25
  propertyRenderer?: (name: string) => React.ReactNode;
16
- disablePropertySelection?: boolean;
17
- initialFilter?: PropertyFilter;
18
- }
19
- /** @alpha */
20
- export interface PropertyFilterBuilderContextProps {
21
- actions: PropertyFilterBuilderActions;
22
- properties: PropertyDescription[];
23
- onRulePropertySelected?: (property: PropertyDescription) => void;
26
+ /** Specifies how deep rule groups can be nested. */
24
27
  ruleGroupDepthLimit?: number;
28
+ /** Specifies whether component is disabled or not. */
29
+ isDisabled?: boolean;
30
+ /** Initial filter that should be shown when component is mounted. */
31
+ initialFilter?: PropertyFilter;
25
32
  }
26
- /** @alpha */
27
- export declare const PropertyFilterBuilderContext: React.Context<PropertyFilterBuilderContextProps>;
28
- /** @alpha */
29
- export interface PropertyFilterBuilderRuleRenderingContextProps {
30
- ruleOperatorRenderer?: (props: PropertyFilterBuilderRuleOperatorProps) => React.ReactNode;
31
- ruleValueRenderer?: (props: PropertyFilterBuilderRuleValueProps) => React.ReactNode;
32
- propertyRenderer?: (name: string) => React.ReactNode;
33
- disablePropertySelection?: boolean;
34
- }
35
- /** @alpha */
36
- export declare const PropertyFilterBuilderRuleRenderingContext: React.Context<PropertyFilterBuilderRuleRenderingContextProps>;
37
- /** @alpha */
33
+ /**
34
+ * Component for building complex filters. It allows to create filter rules or rule groups based on provided list of properties.
35
+ * @beta
36
+ */
38
37
  export declare function PropertyFilterBuilder(props: PropertyFilterBuilderProps): JSX.Element;
39
- /** @internal */
40
- export declare function buildPropertyFilter(groupItem: PropertyFilterBuilderRuleGroupItem): PropertyFilter | undefined;
41
38
  //# sourceMappingURL=FilterBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilder.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilder.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAuB,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,sCAAsC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAC6B,4BAA4B,EAC9D,kCAAkC,EACnC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,aAAa;AACb,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACnD,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,sCAAsC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1F,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC;AAED,aAAa;AACb,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,4BAA4B,CAAC;IACtC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,aAAa;AACb,eAAO,MAAM,4BAA4B,kDAAgE,CAAC;AAE1G,aAAa;AACb,MAAM,WAAW,8CAA8C;IAC7D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,sCAAsC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1F,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpF,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,aAAa;AACb,eAAO,MAAM,yCAAyC,+DAA0E,CAAC;AAIjI,aAAa;AACb,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,eAgCtE;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,kCAAkC,GAAG,cAAc,GAAG,SAAS,CAI7G"}
1
+ {"version":3,"file":"FilterBuilder.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilder.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,sCAAsC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,+DAA+D;IAC/D,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,oDAAoD;IACpD,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACnD,sEAAsE;IACtE,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjE,kDAAkD;IAClD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,sCAAsC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1F,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpF,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,eAgCtE"}
@@ -1,4 +1,11 @@
1
1
  "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module PropertyFilterBuilder
8
+ */
2
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
10
  if (k2 === undefined) k2 = k;
4
11
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -19,103 +26,34 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
26
  return result;
20
27
  };
21
28
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.buildPropertyFilter = exports.PropertyFilterBuilder = exports.PropertyFilterBuilderRuleRenderingContext = exports.PropertyFilterBuilderContext = void 0;
23
- /*---------------------------------------------------------------------------------------------
24
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
25
- * See LICENSE.md in the project root for license terms and full copyright notice.
26
- *--------------------------------------------------------------------------------------------*/
29
+ exports.PropertyFilterBuilder = void 0;
27
30
  const React = __importStar(require("react"));
28
- const appui_abstract_1 = require("@itwin/appui-abstract");
31
+ const FilterBuilderContext_1 = require("./FilterBuilderContext");
29
32
  const FilterBuilderRuleGroup_1 = require("./FilterBuilderRuleGroup");
30
33
  const FilterBuilderState_1 = require("./FilterBuilderState");
31
- const Operators_1 = require("./Operators");
32
- /** @alpha */
33
- exports.PropertyFilterBuilderContext = React.createContext(null);
34
- /** @alpha */
35
- exports.PropertyFilterBuilderRuleRenderingContext = React.createContext({});
36
34
  const ROOT_GROUP_PATH = [];
37
- /** @alpha */
35
+ /**
36
+ * Component for building complex filters. It allows to create filter rules or rule groups based on provided list of properties.
37
+ * @beta
38
+ */
38
39
  function PropertyFilterBuilder(props) {
39
- const { properties, onFilterChanged, onRulePropertySelected, ruleOperatorRenderer, ruleValueRenderer, ruleGroupDepthLimit, propertyRenderer, disablePropertySelection, initialFilter } = props;
40
+ const { properties, onFilterChanged, onRulePropertySelected, ruleOperatorRenderer, ruleValueRenderer, ruleGroupDepthLimit, propertyRenderer, isDisabled, initialFilter } = props;
40
41
  const { state, actions } = (0, FilterBuilderState_1.usePropertyFilterBuilderState)(initialFilter);
41
42
  const rootRef = React.useRef(null);
42
43
  const firstRender = React.useRef(true);
43
- const filter = React.useMemo(() => buildPropertyFilter(state.rootGroup), [state]);
44
+ const filter = React.useMemo(() => (0, FilterBuilderState_1.buildPropertyFilter)(state.rootGroup), [state]);
44
45
  React.useEffect(() => {
45
46
  if (!firstRender.current)
46
47
  onFilterChanged(filter);
47
48
  firstRender.current = false;
48
49
  }, [filter, onFilterChanged]);
49
50
  const contextValue = React.useMemo(() => ({ actions, properties, onRulePropertySelected, ruleGroupDepthLimit }), [actions, properties, onRulePropertySelected, ruleGroupDepthLimit]);
50
- const renderingContextValue = React.useMemo(() => ({ ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, disablePropertySelection }), [ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, disablePropertySelection]);
51
- return (React.createElement(exports.PropertyFilterBuilderRuleRenderingContext.Provider, { value: renderingContextValue },
52
- React.createElement(exports.PropertyFilterBuilderContext.Provider, { value: contextValue },
53
- React.createElement(FilterBuilderRuleGroup_1.ActiveRuleGroupContext.Provider, { value: useActiveRuleGroupContextProps(rootRef) },
51
+ const renderingContextValue = React.useMemo(() => ({ ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, isDisabled }), [ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, isDisabled]);
52
+ return (React.createElement(FilterBuilderContext_1.PropertyFilterBuilderRuleRenderingContext.Provider, { value: renderingContextValue },
53
+ React.createElement(FilterBuilderContext_1.PropertyFilterBuilderContext.Provider, { value: contextValue },
54
+ React.createElement(FilterBuilderContext_1.ActiveRuleGroupContext.Provider, { value: (0, FilterBuilderContext_1.useActiveRuleGroupContextProps)(rootRef) },
54
55
  React.createElement("div", { ref: rootRef, className: "filter-builder" },
55
56
  React.createElement(FilterBuilderRuleGroup_1.PropertyFilterBuilderRuleGroupRenderer, { path: ROOT_GROUP_PATH, group: state.rootGroup }))))));
56
57
  }
57
58
  exports.PropertyFilterBuilder = PropertyFilterBuilder;
58
- /** @internal */
59
- function buildPropertyFilter(groupItem) {
60
- if ((0, FilterBuilderState_1.isPropertyFilterBuilderRuleGroup)(groupItem))
61
- return buildPropertyFilterFromRuleGroup(groupItem);
62
- return buildPropertyFilterFromRule(groupItem);
63
- }
64
- exports.buildPropertyFilter = buildPropertyFilter;
65
- function buildPropertyFilterFromRuleGroup(rootGroup) {
66
- if (rootGroup.items.length === 0)
67
- return undefined;
68
- const rules = new Array();
69
- for (const item of rootGroup.items) {
70
- const rule = buildPropertyFilter(item);
71
- if (!rule)
72
- return undefined;
73
- rules.push(rule);
74
- }
75
- if (rules.length === 1)
76
- return rules[0];
77
- return {
78
- operator: rootGroup.operator,
79
- rules,
80
- };
81
- }
82
- function buildPropertyFilterFromRule(rule) {
83
- const { property, operator, value } = rule;
84
- if (!property || operator === undefined)
85
- return undefined;
86
- if (!(0, Operators_1.isUnaryPropertyFilterOperator)(operator) && (value === undefined || value.valueFormat !== appui_abstract_1.PropertyValueFormat.Primitive || value.value === undefined))
87
- return undefined;
88
- return { property, operator, value };
89
- }
90
- function useActiveRuleGroupContextProps(rootElementRef) {
91
- const [activeElement, setActiveElement] = React.useState();
92
- const onFocus = React.useCallback((e) => {
93
- e.stopPropagation();
94
- setActiveElement(e.currentTarget);
95
- }, []);
96
- const onBlur = React.useCallback((e) => {
97
- e.stopPropagation();
98
- if (activeElement !== e.currentTarget || (rootElementRef.current && rootElementRef.current.contains(e.relatedTarget)))
99
- return;
100
- setActiveElement(undefined);
101
- }, [activeElement, rootElementRef]);
102
- const onMouseOver = React.useCallback((e) => {
103
- e.stopPropagation();
104
- setActiveElement(e.currentTarget);
105
- }, []);
106
- const onMouseOut = React.useCallback((e) => {
107
- e.stopPropagation();
108
- // istanbul ignore if
109
- if (activeElement !== e.currentTarget)
110
- return;
111
- setActiveElement(undefined);
112
- }, [activeElement]);
113
- return React.useMemo(() => ({
114
- activeElement,
115
- onFocus,
116
- onBlur,
117
- onMouseOver,
118
- onMouseOut,
119
- }), [activeElement, onFocus, onBlur, onMouseOver, onMouseOut]);
120
- }
121
59
  //# sourceMappingURL=FilterBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilder.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilder.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as React from \"react\";\r\nimport { PropertyDescription, PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport { ActiveRuleGroupContext, PropertyFilterBuilderRuleGroupRenderer } from \"./FilterBuilderRuleGroup\";\r\nimport { PropertyFilterBuilderRuleOperatorProps } from \"./FilterBuilderRuleOperator\";\r\nimport { PropertyFilterBuilderRuleValueProps } from \"./FilterBuilderRuleValue\";\r\nimport {\r\n isPropertyFilterBuilderRuleGroup, PropertyFilterBuilderActions, PropertyFilterBuilderRule, PropertyFilterBuilderRuleGroup,\r\n PropertyFilterBuilderRuleGroupItem, usePropertyFilterBuilderState,\r\n} from \"./FilterBuilderState\";\r\nimport { isUnaryPropertyFilterOperator } from \"./Operators\";\r\nimport { PropertyFilter } from \"./Types\";\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderProps {\r\n properties: PropertyDescription[];\r\n onFilterChanged: (filter?: PropertyFilter) => void;\r\n onRulePropertySelected?: (property: PropertyDescription) => void;\r\n ruleOperatorRenderer?: (props: PropertyFilterBuilderRuleOperatorProps) => React.ReactNode;\r\n ruleValueRenderer?: (props: PropertyFilterBuilderRuleValueProps) => React.ReactNode;\r\n ruleGroupDepthLimit?: number;\r\n propertyRenderer?: (name: string) => React.ReactNode;\r\n disablePropertySelection?: boolean;\r\n initialFilter?: PropertyFilter;\r\n}\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderContextProps {\r\n actions: PropertyFilterBuilderActions;\r\n properties: PropertyDescription[];\r\n onRulePropertySelected?: (property: PropertyDescription) => void;\r\n ruleGroupDepthLimit?: number;\r\n}\r\n\r\n/** @alpha */\r\nexport const PropertyFilterBuilderContext = React.createContext<PropertyFilterBuilderContextProps>(null!);\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderRuleRenderingContextProps {\r\n ruleOperatorRenderer?: (props: PropertyFilterBuilderRuleOperatorProps) => React.ReactNode;\r\n ruleValueRenderer?: (props: PropertyFilterBuilderRuleValueProps) => React.ReactNode;\r\n propertyRenderer?: (name: string) => React.ReactNode;\r\n disablePropertySelection?: boolean;\r\n}\r\n\r\n/** @alpha */\r\nexport const PropertyFilterBuilderRuleRenderingContext = React.createContext<PropertyFilterBuilderRuleRenderingContextProps>({});\r\n\r\nconst ROOT_GROUP_PATH: string[] = [];\r\n\r\n/** @alpha */\r\nexport function PropertyFilterBuilder(props: PropertyFilterBuilderProps) {\r\n const { properties, onFilterChanged, onRulePropertySelected, ruleOperatorRenderer, ruleValueRenderer, ruleGroupDepthLimit, propertyRenderer, disablePropertySelection, initialFilter } = props;\r\n const { state, actions } = usePropertyFilterBuilderState(initialFilter);\r\n const rootRef = React.useRef<HTMLDivElement>(null);\r\n\r\n const firstRender = React.useRef(true);\r\n const filter = React.useMemo(() => buildPropertyFilter(state.rootGroup), [state]);\r\n React.useEffect(() => {\r\n if (!firstRender.current)\r\n onFilterChanged(filter);\r\n firstRender.current = false;\r\n }, [filter, onFilterChanged]);\r\n\r\n const contextValue = React.useMemo<PropertyFilterBuilderContextProps>(\r\n () => ({ actions, properties, onRulePropertySelected, ruleGroupDepthLimit }),\r\n [actions, properties, onRulePropertySelected, ruleGroupDepthLimit]\r\n );\r\n const renderingContextValue = React.useMemo<PropertyFilterBuilderRuleRenderingContextProps>(\r\n () => ({ ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, disablePropertySelection }),\r\n [ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, disablePropertySelection]\r\n );\r\n return (\r\n <PropertyFilterBuilderRuleRenderingContext.Provider value={renderingContextValue}>\r\n <PropertyFilterBuilderContext.Provider value={contextValue}>\r\n <ActiveRuleGroupContext.Provider value={useActiveRuleGroupContextProps(rootRef)}>\r\n <div ref={rootRef} className=\"filter-builder\">\r\n <PropertyFilterBuilderRuleGroupRenderer path={ROOT_GROUP_PATH} group={state.rootGroup} />\r\n </div>\r\n </ActiveRuleGroupContext.Provider>\r\n </PropertyFilterBuilderContext.Provider>\r\n </PropertyFilterBuilderRuleRenderingContext.Provider>\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function buildPropertyFilter(groupItem: PropertyFilterBuilderRuleGroupItem): PropertyFilter | undefined {\r\n if (isPropertyFilterBuilderRuleGroup(groupItem))\r\n return buildPropertyFilterFromRuleGroup(groupItem);\r\n return buildPropertyFilterFromRule(groupItem);\r\n}\r\n\r\nfunction buildPropertyFilterFromRuleGroup(rootGroup: PropertyFilterBuilderRuleGroup): PropertyFilter | undefined {\r\n if (rootGroup.items.length === 0)\r\n return undefined;\r\n\r\n const rules = new Array<PropertyFilter>();\r\n for (const item of rootGroup.items) {\r\n const rule = buildPropertyFilter(item);\r\n if (!rule)\r\n return undefined;\r\n rules.push(rule);\r\n }\r\n\r\n if (rules.length === 1)\r\n return rules[0];\r\n\r\n return {\r\n operator: rootGroup.operator,\r\n rules,\r\n };\r\n}\r\n\r\nfunction buildPropertyFilterFromRule(rule: PropertyFilterBuilderRule): PropertyFilter | undefined {\r\n const { property, operator, value } = rule;\r\n if (!property || operator === undefined)\r\n return undefined;\r\n\r\n if (!isUnaryPropertyFilterOperator(operator) && (value === undefined || value.valueFormat !== PropertyValueFormat.Primitive || value.value === undefined))\r\n return undefined;\r\n\r\n return { property, operator, value };\r\n}\r\n\r\nfunction useActiveRuleGroupContextProps(rootElementRef: React.RefObject<HTMLElement>) {\r\n const [activeElement, setActiveElement] = React.useState<HTMLElement | undefined>();\r\n\r\n const onFocus: React.FocusEventHandler<HTMLElement> = React.useCallback((e) => {\r\n e.stopPropagation();\r\n setActiveElement(e.currentTarget);\r\n }, []);\r\n\r\n const onBlur: React.FocusEventHandler<HTMLElement> = React.useCallback((e) => {\r\n e.stopPropagation();\r\n if (activeElement !== e.currentTarget || (rootElementRef.current && rootElementRef.current.contains(e.relatedTarget)))\r\n return;\r\n\r\n setActiveElement(undefined);\r\n }, [activeElement, rootElementRef]);\r\n\r\n const onMouseOver: React.MouseEventHandler<HTMLElement> = React.useCallback((e) => {\r\n e.stopPropagation();\r\n setActiveElement(e.currentTarget);\r\n }, []);\r\n\r\n const onMouseOut: React.MouseEventHandler<HTMLElement> = React.useCallback((e) => {\r\n e.stopPropagation();\r\n // istanbul ignore if\r\n if (activeElement !== e.currentTarget)\r\n return;\r\n\r\n setActiveElement(undefined);\r\n }, [activeElement]);\r\n\r\n return React.useMemo(() => ({\r\n activeElement,\r\n onFocus,\r\n onBlur,\r\n onMouseOver,\r\n onMouseOut,\r\n }), [activeElement, onFocus, onBlur, onMouseOver, onMouseOut]);\r\n}\r\n"]}
1
+ {"version":3,"file":"FilterBuilder.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilder.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,iEAGgC;AAChC,qEAAkF;AAGlF,6DAA0F;AA4B1F,MAAM,eAAe,GAAa,EAAE,CAAC;AAErC;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IACjL,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAA,kDAA6B,EAAC,aAAa,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,wCAAmB,EAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,WAAW,CAAC,OAAO;YACtB,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1B,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IAC9B,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,CAAC,EAC5E,CAAC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,CACnE,CAAC;IACF,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CACzC,GAAG,EAAE,CAAC,CAAC,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,EACjF,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC,CACxE,CAAC;IACF,OAAO,CACL,oBAAC,gEAAyC,CAAC,QAAQ,IAAC,KAAK,EAAE,qBAAqB;QAC9E,oBAAC,mDAA4B,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY;YACxD,oBAAC,6CAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAA,qDAA8B,EAAC,OAAO,CAAC;gBAC7E,6BAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAC,gBAAgB;oBAC3C,oBAAC,+DAAsC,IAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,GAAI,CACrF,CAC0B,CACI,CACW,CACtD,CAAC;AACJ,CAAC;AAhCD,sDAgCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module PropertyFilterBuilder\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { PropertyDescription } from \"@itwin/appui-abstract\";\r\nimport {\r\n ActiveRuleGroupContext, PropertyFilterBuilderContext, PropertyFilterBuilderContextProps, PropertyFilterBuilderRuleRenderingContext,\r\n PropertyFilterBuilderRuleRenderingContextProps, useActiveRuleGroupContextProps,\r\n} from \"./FilterBuilderContext\";\r\nimport { PropertyFilterBuilderRuleGroupRenderer } from \"./FilterBuilderRuleGroup\";\r\nimport { PropertyFilterBuilderRuleOperatorProps } from \"./FilterBuilderRuleOperator\";\r\nimport { PropertyFilterBuilderRuleValueProps } from \"./FilterBuilderRuleValue\";\r\nimport { buildPropertyFilter, usePropertyFilterBuilderState } from \"./FilterBuilderState\";\r\nimport { PropertyFilter } from \"./Types\";\r\n\r\n/**\r\n * Props for [[PropertyFilterBuilder]] component.\r\n * @beta\r\n */\r\nexport interface PropertyFilterBuilderProps {\r\n /** List of properties available to be used in filter rules. */\r\n properties: PropertyDescription[];\r\n /** Callback that is invoked when filter changes. */\r\n onFilterChanged: (filter?: PropertyFilter) => void;\r\n /** Callback that is invoked when property is selected in any rule. */\r\n onRulePropertySelected?: (property: PropertyDescription) => void;\r\n /** Custom renderer for rule operator selector. */\r\n ruleOperatorRenderer?: (props: PropertyFilterBuilderRuleOperatorProps) => React.ReactNode;\r\n /** Custom renderer for rule value input. */\r\n ruleValueRenderer?: (props: PropertyFilterBuilderRuleValueProps) => React.ReactNode;\r\n /** Custom renderer for property selector in rule. */\r\n propertyRenderer?: (name: string) => React.ReactNode;\r\n /** Specifies how deep rule groups can be nested. */\r\n ruleGroupDepthLimit?: number;\r\n /** Specifies whether component is disabled or not. */\r\n isDisabled?: boolean;\r\n /** Initial filter that should be shown when component is mounted. */\r\n initialFilter?: PropertyFilter;\r\n}\r\n\r\nconst ROOT_GROUP_PATH: string[] = [];\r\n\r\n/**\r\n * Component for building complex filters. It allows to create filter rules or rule groups based on provided list of properties.\r\n * @beta\r\n */\r\nexport function PropertyFilterBuilder(props: PropertyFilterBuilderProps) {\r\n const { properties, onFilterChanged, onRulePropertySelected, ruleOperatorRenderer, ruleValueRenderer, ruleGroupDepthLimit, propertyRenderer, isDisabled, initialFilter } = props;\r\n const { state, actions } = usePropertyFilterBuilderState(initialFilter);\r\n const rootRef = React.useRef<HTMLDivElement>(null);\r\n\r\n const firstRender = React.useRef(true);\r\n const filter = React.useMemo(() => buildPropertyFilter(state.rootGroup), [state]);\r\n React.useEffect(() => {\r\n if (!firstRender.current)\r\n onFilterChanged(filter);\r\n firstRender.current = false;\r\n }, [filter, onFilterChanged]);\r\n\r\n const contextValue = React.useMemo<PropertyFilterBuilderContextProps>(\r\n () => ({ actions, properties, onRulePropertySelected, ruleGroupDepthLimit }),\r\n [actions, properties, onRulePropertySelected, ruleGroupDepthLimit]\r\n );\r\n const renderingContextValue = React.useMemo<PropertyFilterBuilderRuleRenderingContextProps>(\r\n () => ({ ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, isDisabled }),\r\n [ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, isDisabled]\r\n );\r\n return (\r\n <PropertyFilterBuilderRuleRenderingContext.Provider value={renderingContextValue}>\r\n <PropertyFilterBuilderContext.Provider value={contextValue}>\r\n <ActiveRuleGroupContext.Provider value={useActiveRuleGroupContextProps(rootRef)}>\r\n <div ref={rootRef} className=\"filter-builder\">\r\n <PropertyFilterBuilderRuleGroupRenderer path={ROOT_GROUP_PATH} group={state.rootGroup} />\r\n </div>\r\n </ActiveRuleGroupContext.Provider>\r\n </PropertyFilterBuilderContext.Provider>\r\n </PropertyFilterBuilderRuleRenderingContext.Provider>\r\n );\r\n}\r\n"]}