@pega/cosmos-react-build 9.0.0-build.1.0 → 9.0.0-build.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/lib/components/AuthoringPanel/AuthoringPanel.d.ts +7 -0
  2. package/lib/components/AuthoringPanel/AuthoringPanel.d.ts.map +1 -0
  3. package/lib/components/AuthoringPanel/AuthoringPanel.js +49 -0
  4. package/lib/components/AuthoringPanel/AuthoringPanel.js.map +1 -0
  5. package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts +21 -0
  6. package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts.map +1 -0
  7. package/lib/components/AuthoringPanel/AuthoringPanel.styles.js +133 -0
  8. package/lib/components/AuthoringPanel/AuthoringPanel.styles.js.map +1 -0
  9. package/lib/components/AuthoringPanel/AuthoringPanel.test-ids.d.ts +2 -0
  10. package/lib/components/AuthoringPanel/AuthoringPanel.test-ids.d.ts.map +1 -0
  11. package/lib/components/AuthoringPanel/AuthoringPanel.test-ids.js +16 -0
  12. package/lib/components/AuthoringPanel/AuthoringPanel.test-ids.js.map +1 -0
  13. package/lib/components/AuthoringPanel/AuthoringPanel.types.d.ts +81 -0
  14. package/lib/components/AuthoringPanel/AuthoringPanel.types.d.ts.map +1 -0
  15. package/lib/components/AuthoringPanel/AuthoringPanel.types.js +2 -0
  16. package/lib/components/AuthoringPanel/AuthoringPanel.types.js.map +1 -0
  17. package/lib/components/AuthoringPanel/AuthoringPanelHeader.d.ts +6 -0
  18. package/lib/components/AuthoringPanel/AuthoringPanelHeader.d.ts.map +1 -0
  19. package/lib/components/AuthoringPanel/AuthoringPanelHeader.js +41 -0
  20. package/lib/components/AuthoringPanel/AuthoringPanelHeader.js.map +1 -0
  21. package/lib/components/AuthoringPanel/index.d.ts +4 -0
  22. package/lib/components/AuthoringPanel/index.d.ts.map +1 -0
  23. package/lib/components/AuthoringPanel/index.js +3 -0
  24. package/lib/components/AuthoringPanel/index.js.map +1 -0
  25. package/lib/components/Automation/Automation.d.ts +7 -0
  26. package/lib/components/Automation/Automation.d.ts.map +1 -0
  27. package/lib/components/Automation/Automation.js +113 -0
  28. package/lib/components/Automation/Automation.js.map +1 -0
  29. package/lib/components/Automation/Automation.styles.d.ts +12 -0
  30. package/lib/components/Automation/Automation.styles.d.ts.map +1 -0
  31. package/lib/components/Automation/Automation.styles.js +68 -0
  32. package/lib/components/Automation/Automation.styles.js.map +1 -0
  33. package/lib/components/Automation/Automation.test-ids.d.ts +3 -0
  34. package/lib/components/Automation/Automation.test-ids.d.ts.map +1 -0
  35. package/lib/components/Automation/Automation.test-ids.js +21 -0
  36. package/lib/components/Automation/Automation.test-ids.js.map +1 -0
  37. package/lib/components/Automation/Automation.types.d.ts +95 -0
  38. package/lib/components/Automation/Automation.types.d.ts.map +1 -0
  39. package/lib/components/Automation/Automation.types.js +18 -0
  40. package/lib/components/Automation/Automation.types.js.map +1 -0
  41. package/lib/components/Automation/Automation.utils.d.ts +109 -0
  42. package/lib/components/Automation/Automation.utils.d.ts.map +1 -0
  43. package/lib/components/Automation/Automation.utils.js +208 -0
  44. package/lib/components/Automation/Automation.utils.js.map +1 -0
  45. package/lib/components/Automation/AutomationContext.d.ts +4 -0
  46. package/lib/components/Automation/AutomationContext.d.ts.map +1 -0
  47. package/lib/components/Automation/AutomationContext.js +9 -0
  48. package/lib/components/Automation/AutomationContext.js.map +1 -0
  49. package/lib/components/Automation/RuleStep.d.ts +7 -0
  50. package/lib/components/Automation/RuleStep.d.ts.map +1 -0
  51. package/lib/components/Automation/RuleStep.js +151 -0
  52. package/lib/components/Automation/RuleStep.js.map +1 -0
  53. package/lib/components/Automation/index.d.ts +5 -0
  54. package/lib/components/Automation/index.d.ts.map +1 -0
  55. package/lib/components/Automation/index.js +4 -0
  56. package/lib/components/Automation/index.js.map +1 -0
  57. package/lib/components/DynamicInput/BooleanControl.d.ts +1 -1
  58. package/lib/components/DynamicInput/BooleanControl.d.ts.map +1 -1
  59. package/lib/components/DynamicInput/BooleanControl.js.map +1 -1
  60. package/lib/components/DynamicInput/ConstantControl.d.ts +3 -3
  61. package/lib/components/DynamicInput/ConstantControl.d.ts.map +1 -1
  62. package/lib/components/DynamicInput/ConstantControl.js.map +1 -1
  63. package/lib/components/DynamicInput/DynamicInput.styles.d.ts +0 -1
  64. package/lib/components/DynamicInput/DynamicInput.styles.d.ts.map +1 -1
  65. package/lib/components/DynamicInput/DynamicInput.styles.js +48 -41
  66. package/lib/components/DynamicInput/DynamicInput.styles.js.map +1 -1
  67. package/lib/components/DynamicInput/DynamicInput.types.d.ts +11 -6
  68. package/lib/components/DynamicInput/DynamicInput.types.d.ts.map +1 -1
  69. package/lib/components/DynamicInput/DynamicInput.types.js.map +1 -1
  70. package/lib/components/DynamicInput/utils.d.ts.map +1 -1
  71. package/lib/components/DynamicInput/utils.js +3 -2
  72. package/lib/components/DynamicInput/utils.js.map +1 -1
  73. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.d.ts +34 -0
  74. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.d.ts.map +1 -0
  75. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.js +55 -0
  76. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.js.map +1 -0
  77. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.test-ids.d.ts +2 -0
  78. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.test-ids.d.ts.map +1 -0
  79. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.test-ids.js +10 -0
  80. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.test-ids.js.map +1 -0
  81. package/lib/components/EmptyRuleTemplate/index.d.ts +3 -0
  82. package/lib/components/EmptyRuleTemplate/index.d.ts.map +1 -0
  83. package/lib/components/EmptyRuleTemplate/index.js +2 -0
  84. package/lib/components/EmptyRuleTemplate/index.js.map +1 -0
  85. package/lib/components/Expression/Expression.d.ts.map +1 -1
  86. package/lib/components/Expression/Expression.js +8 -7
  87. package/lib/components/Expression/Expression.js.map +1 -1
  88. package/lib/components/Expression/Expression.styles.d.ts +5 -1
  89. package/lib/components/Expression/Expression.styles.d.ts.map +1 -1
  90. package/lib/components/Expression/Expression.styles.js +15 -3
  91. package/lib/components/Expression/Expression.styles.js.map +1 -1
  92. package/lib/components/Expression/Expression.test-ids.d.ts +1 -0
  93. package/lib/components/Expression/Expression.test-ids.d.ts.map +1 -1
  94. package/lib/components/Expression/Expression.test-ids.js +6 -0
  95. package/lib/components/Expression/Expression.test-ids.js.map +1 -1
  96. package/lib/components/Expression/ExpressionBuilderModal.d.ts +6 -0
  97. package/lib/components/Expression/ExpressionBuilderModal.d.ts.map +1 -0
  98. package/lib/components/Expression/ExpressionBuilderModal.js +53 -0
  99. package/lib/components/Expression/ExpressionBuilderModal.js.map +1 -0
  100. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.d.ts.map +1 -1
  101. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js +1 -0
  102. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js.map +1 -1
  103. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts.map +1 -1
  104. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js +3 -2
  105. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js.map +1 -1
  106. package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts +4 -2
  107. package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts.map +1 -1
  108. package/lib/components/ExpressionBuilder/ExpressionBuilder.js +66 -25
  109. package/lib/components/ExpressionBuilder/ExpressionBuilder.js.map +1 -1
  110. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts +18 -2
  111. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts.map +1 -1
  112. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js +80 -13
  113. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js.map +1 -1
  114. package/lib/components/ExpressionBuilder/ExpressionBuilder.test-ids.d.ts +5 -0
  115. package/lib/components/ExpressionBuilder/ExpressionBuilder.test-ids.d.ts.map +1 -0
  116. package/lib/components/ExpressionBuilder/ExpressionBuilder.test-ids.js +22 -0
  117. package/lib/components/ExpressionBuilder/ExpressionBuilder.test-ids.js.map +1 -0
  118. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts +33 -5
  119. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts.map +1 -1
  120. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.js.map +1 -1
  121. package/lib/components/ExpressionBuilder/ExpressionDetails.d.ts +4 -2
  122. package/lib/components/ExpressionBuilder/ExpressionDetails.d.ts.map +1 -1
  123. package/lib/components/ExpressionBuilder/ExpressionDetails.js +6 -4
  124. package/lib/components/ExpressionBuilder/ExpressionDetails.js.map +1 -1
  125. package/lib/components/ExpressionBuilder/ExpressionItem.d.ts +4 -2
  126. package/lib/components/ExpressionBuilder/ExpressionItem.d.ts.map +1 -1
  127. package/lib/components/ExpressionBuilder/ExpressionItem.js +8 -6
  128. package/lib/components/ExpressionBuilder/ExpressionItem.js.map +1 -1
  129. package/lib/components/ExpressionBuilder/ExpressionList.d.ts +4 -2
  130. package/lib/components/ExpressionBuilder/ExpressionList.d.ts.map +1 -1
  131. package/lib/components/ExpressionBuilder/ExpressionList.js +17 -5
  132. package/lib/components/ExpressionBuilder/ExpressionList.js.map +1 -1
  133. package/lib/components/ExpressionBuilder/index.d.ts +2 -1
  134. package/lib/components/ExpressionBuilder/index.d.ts.map +1 -1
  135. package/lib/components/ExpressionBuilder/index.js +1 -0
  136. package/lib/components/ExpressionBuilder/index.js.map +1 -1
  137. package/lib/components/FieldReference/FieldReference.types.d.ts +16 -2
  138. package/lib/components/FieldReference/FieldReference.types.d.ts.map +1 -1
  139. package/lib/components/FieldReference/FieldReference.types.js.map +1 -1
  140. package/lib/components/FieldReference/FieldReferenceInput.d.ts.map +1 -1
  141. package/lib/components/FieldReference/FieldReferenceInput.js +5 -5
  142. package/lib/components/FieldReference/FieldReferenceInput.js.map +1 -1
  143. package/lib/components/FieldReference/helpers.d.ts +7 -1
  144. package/lib/components/FieldReference/helpers.d.ts.map +1 -1
  145. package/lib/components/FieldReference/helpers.js +31 -1
  146. package/lib/components/FieldReference/helpers.js.map +1 -1
  147. package/lib/components/FieldReference/index.d.ts +2 -2
  148. package/lib/components/FieldReference/index.d.ts.map +1 -1
  149. package/lib/components/FieldReference/index.js +1 -1
  150. package/lib/components/FieldReference/index.js.map +1 -1
  151. package/lib/components/IconTile/iconUtils.d.ts +2 -1
  152. package/lib/components/IconTile/iconUtils.d.ts.map +1 -1
  153. package/lib/components/IconTile/iconUtils.js +94 -1
  154. package/lib/components/IconTile/iconUtils.js.map +1 -1
  155. package/lib/components/IconTile/index.d.ts +1 -0
  156. package/lib/components/IconTile/index.d.ts.map +1 -1
  157. package/lib/components/IconTile/index.js +1 -0
  158. package/lib/components/IconTile/index.js.map +1 -1
  159. package/lib/components/LifeCycle/Category.d.ts +0 -1
  160. package/lib/components/LifeCycle/Category.d.ts.map +1 -1
  161. package/lib/components/LifeCycle/Category.js +16 -56
  162. package/lib/components/LifeCycle/Category.js.map +1 -1
  163. package/lib/components/LifeCycle/LifeCycle.js +2 -2
  164. package/lib/components/LifeCycle/LifeCycle.js.map +1 -1
  165. package/lib/components/LifeCycle/LifeCycle.types.d.ts +37 -2
  166. package/lib/components/LifeCycle/LifeCycle.types.d.ts.map +1 -1
  167. package/lib/components/LifeCycle/LifeCycle.types.js +9 -9
  168. package/lib/components/LifeCycle/LifeCycle.types.js.map +1 -1
  169. package/lib/components/LifeCycle/LifeCycleDragDropList.d.ts.map +1 -1
  170. package/lib/components/LifeCycle/LifeCycleDragDropList.js +25 -3
  171. package/lib/components/LifeCycle/LifeCycleDragDropList.js.map +1 -1
  172. package/lib/components/LifeCycle/Stage.d.ts.map +1 -1
  173. package/lib/components/LifeCycle/Stage.js +20 -11
  174. package/lib/components/LifeCycle/Stage.js.map +1 -1
  175. package/lib/components/LifeCycle/Step.d.ts.map +1 -1
  176. package/lib/components/LifeCycle/Step.js +1 -0
  177. package/lib/components/LifeCycle/Step.js.map +1 -1
  178. package/lib/components/LifeCycle/Task.d.ts +7 -1
  179. package/lib/components/LifeCycle/Task.d.ts.map +1 -1
  180. package/lib/components/LifeCycle/Task.js +19 -10
  181. package/lib/components/LifeCycle/Task.js.map +1 -1
  182. package/lib/components/LifeCycle/TaskGroup.d.ts +23 -0
  183. package/lib/components/LifeCycle/TaskGroup.d.ts.map +1 -0
  184. package/lib/components/LifeCycle/TaskGroup.js +92 -0
  185. package/lib/components/LifeCycle/TaskGroup.js.map +1 -0
  186. package/lib/components/LifeCycle/index.d.ts +1 -1
  187. package/lib/components/LifeCycle/index.d.ts.map +1 -1
  188. package/lib/components/LifeCycle/index.js +1 -1
  189. package/lib/components/LifeCycle/index.js.map +1 -1
  190. package/lib/components/LifeCycle/utils.d.ts +6 -1
  191. package/lib/components/LifeCycle/utils.d.ts.map +1 -1
  192. package/lib/components/LifeCycle/utils.js +129 -0
  193. package/lib/components/LifeCycle/utils.js.map +1 -1
  194. package/lib/components/ObjectSelect/InputTree/InputTree.d.ts +21 -0
  195. package/lib/components/ObjectSelect/InputTree/InputTree.d.ts.map +1 -0
  196. package/lib/components/ObjectSelect/InputTree/InputTree.js +20 -0
  197. package/lib/components/ObjectSelect/InputTree/InputTree.js.map +1 -0
  198. package/lib/components/ObjectSelect/InputTree/InputTree.styles.d.ts +10 -0
  199. package/lib/components/ObjectSelect/InputTree/InputTree.styles.d.ts.map +1 -0
  200. package/lib/components/ObjectSelect/InputTree/InputTree.styles.js +82 -0
  201. package/lib/components/ObjectSelect/InputTree/InputTree.styles.js.map +1 -0
  202. package/lib/components/ObjectSelect/InputTree/index.d.ts +3 -0
  203. package/lib/components/ObjectSelect/InputTree/index.d.ts.map +1 -0
  204. package/lib/components/ObjectSelect/InputTree/index.js +2 -0
  205. package/lib/components/ObjectSelect/InputTree/index.js.map +1 -0
  206. package/lib/components/ObjectSelect/ObjectPicker.d.ts +11 -5
  207. package/lib/components/ObjectSelect/ObjectPicker.d.ts.map +1 -1
  208. package/lib/components/ObjectSelect/ObjectPicker.js +24 -15
  209. package/lib/components/ObjectSelect/ObjectPicker.js.map +1 -1
  210. package/lib/components/ObjectSelect/ObjectSelect.d.ts +2 -29
  211. package/lib/components/ObjectSelect/ObjectSelect.d.ts.map +1 -1
  212. package/lib/components/ObjectSelect/ObjectSelect.js +80 -23
  213. package/lib/components/ObjectSelect/ObjectSelect.js.map +1 -1
  214. package/lib/components/ObjectSelect/ObjectSelect.types.d.ts +53 -0
  215. package/lib/components/ObjectSelect/ObjectSelect.types.d.ts.map +1 -0
  216. package/lib/components/ObjectSelect/ObjectSelect.types.js +2 -0
  217. package/lib/components/ObjectSelect/ObjectSelect.types.js.map +1 -0
  218. package/lib/components/ObjectSelect/index.d.ts +1 -1
  219. package/lib/components/ObjectSelect/index.d.ts.map +1 -1
  220. package/lib/components/ObjectSelect/index.js.map +1 -1
  221. package/lib/components/ObjectSelect/useCreateModal.d.ts +6 -2
  222. package/lib/components/ObjectSelect/useCreateModal.d.ts.map +1 -1
  223. package/lib/components/ObjectSelect/useCreateModal.js +7 -4
  224. package/lib/components/ObjectSelect/useCreateModal.js.map +1 -1
  225. package/lib/components/PageBanner/PageBanner.d.ts +6 -4
  226. package/lib/components/PageBanner/PageBanner.d.ts.map +1 -1
  227. package/lib/components/PageBanner/PageBanner.js +10 -9
  228. package/lib/components/PageBanner/PageBanner.js.map +1 -1
  229. package/lib/components/PageBanner/PageBanner.test-ids.d.ts +2 -0
  230. package/lib/components/PageBanner/PageBanner.test-ids.d.ts.map +1 -0
  231. package/lib/components/PageBanner/PageBanner.test-ids.js +9 -0
  232. package/lib/components/PageBanner/PageBanner.test-ids.js.map +1 -0
  233. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.d.ts +12 -0
  234. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.d.ts.map +1 -0
  235. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.js +158 -0
  236. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.js.map +1 -0
  237. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.d.ts +5 -0
  238. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.d.ts.map +1 -0
  239. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.js +15 -0
  240. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.js.map +1 -0
  241. package/lib/components/PageTemplates/GalleryPage.d.ts +14 -4
  242. package/lib/components/PageTemplates/GalleryPage.d.ts.map +1 -1
  243. package/lib/components/PageTemplates/GalleryPage.js +57 -12
  244. package/lib/components/PageTemplates/GalleryPage.js.map +1 -1
  245. package/lib/components/PageTemplates/HeaderActionButtons.d.ts +5 -0
  246. package/lib/components/PageTemplates/HeaderActionButtons.d.ts.map +1 -0
  247. package/lib/components/PageTemplates/HeaderActionButtons.js +14 -0
  248. package/lib/components/PageTemplates/HeaderActionButtons.js.map +1 -0
  249. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageHeader.d.ts +8 -0
  250. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageHeader.d.ts.map +1 -0
  251. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageHeader.js +23 -0
  252. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageHeader.js.map +1 -0
  253. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageTemplate.d.ts +5 -0
  254. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageTemplate.d.ts.map +1 -0
  255. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageTemplate.js +10 -0
  256. package/lib/components/PageTemplates/InventoryPageTemplate/InventoryPageTemplate.js.map +1 -0
  257. package/lib/components/PageTemplates/OverviewPageTemplate/OverviewPageTemplate.d.ts +5 -0
  258. package/lib/components/PageTemplates/OverviewPageTemplate/OverviewPageTemplate.d.ts.map +1 -0
  259. package/lib/components/PageTemplates/OverviewPageTemplate/OverviewPageTemplate.js +10 -0
  260. package/lib/components/PageTemplates/OverviewPageTemplate/OverviewPageTemplate.js.map +1 -0
  261. package/lib/components/PageTemplates/OverviewPageTemplate/PageBanner.d.ts +21 -0
  262. package/lib/components/PageTemplates/OverviewPageTemplate/PageBanner.d.ts.map +1 -0
  263. package/lib/components/PageTemplates/OverviewPageTemplate/PageBanner.js +22 -0
  264. package/lib/components/PageTemplates/OverviewPageTemplate/PageBanner.js.map +1 -0
  265. package/lib/components/PageTemplates/PageTemplate.styles.d.ts +16 -0
  266. package/lib/components/PageTemplates/PageTemplate.styles.d.ts.map +1 -0
  267. package/lib/components/PageTemplates/PageTemplate.styles.js +167 -0
  268. package/lib/components/PageTemplates/PageTemplate.styles.js.map +1 -0
  269. package/lib/components/PageTemplates/PageTemplate.types.d.ts +114 -0
  270. package/lib/components/PageTemplates/PageTemplate.types.d.ts.map +1 -0
  271. package/lib/components/PageTemplates/PageTemplate.types.js +2 -0
  272. package/lib/components/PageTemplates/PageTemplate.types.js.map +1 -0
  273. package/lib/components/PageTemplates/PageTemplates.d.ts +22 -13
  274. package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
  275. package/lib/components/PageTemplates/PageTemplates.js +17 -12
  276. package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
  277. package/lib/components/PageTemplates/PageTemplates.test-ids.d.ts +4 -0
  278. package/lib/components/PageTemplates/PageTemplates.test-ids.d.ts.map +1 -0
  279. package/lib/components/PageTemplates/PageTemplates.test-ids.js +25 -0
  280. package/lib/components/PageTemplates/PageTemplates.test-ids.js.map +1 -0
  281. package/lib/components/PageTemplates/ShowcasePage.d.ts +2 -2
  282. package/lib/components/PageTemplates/ShowcasePage.d.ts.map +1 -1
  283. package/lib/components/PageTemplates/ShowcasePage.js +5 -6
  284. package/lib/components/PageTemplates/ShowcasePage.js.map +1 -1
  285. package/lib/components/PageTemplates/index.d.ts +6 -1
  286. package/lib/components/PageTemplates/index.d.ts.map +1 -1
  287. package/lib/components/PageTemplates/index.js +5 -1
  288. package/lib/components/PageTemplates/index.js.map +1 -1
  289. package/lib/components/RulePicker/RulePicker.d.ts +4 -0
  290. package/lib/components/RulePicker/RulePicker.d.ts.map +1 -0
  291. package/lib/components/RulePicker/RulePicker.js +81 -0
  292. package/lib/components/RulePicker/RulePicker.js.map +1 -0
  293. package/lib/index.d.ts +5 -1
  294. package/lib/index.d.ts.map +1 -1
  295. package/lib/index.js +5 -1
  296. package/lib/index.js.map +1 -1
  297. package/lib/utils/typeIconMapping.js +1 -1
  298. package/lib/utils/typeIconMapping.js.map +1 -1
  299. package/package.json +4 -4
  300. package/lib/utils/index.d.ts +0 -2
  301. package/lib/utils/index.d.ts.map +0 -1
  302. package/lib/utils/index.js +0 -2
  303. package/lib/utils/index.js.map +0 -1
  304. package/lib/utils/utils.d.ts +0 -14
  305. package/lib/utils/utils.d.ts.map +0 -1
  306. package/lib/utils/utils.js +0 -13
  307. package/lib/utils/utils.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  import type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';
2
2
  import type { ExpressionListProps } from './ExpressionBuilder.types';
3
- declare const ExpressionList: ForwardRefForwardPropsComponent<ExpressionListProps>;
4
- export default ExpressionList;
3
+ declare const _default: ForwardRefForwardPropsComponent<ExpressionListProps> & {
4
+ getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<never[]>;
5
+ };
6
+ export default _default;
5
7
  //# sourceMappingURL=ExpressionList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionList.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAuB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAI1F,QAAA,MAAM,cAAc,EAAE,+BAA+B,CAAC,mBAAmB,CAuDxE,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ExpressionList.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAuB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;;;AAiF1F,wBAAqE"}
@@ -1,10 +1,21 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createElement as _createElement } from "react";
3
- import { forwardRef, useState } from 'react';
4
- import { EmptyState } from '@pega/cosmos-react-core';
3
+ import { forwardRef, useState, useRef, useEffect } from 'react';
4
+ import { EmptyState, useItemIntersection, useConsolidatedRef, useTestIds, withTestIds } from '@pega/cosmos-react-core';
5
5
  import ExpressionItem from './ExpressionItem';
6
6
  import { StyledExpressionList } from './ExpressionBuilder.styles';
7
- const ExpressionList = forwardRef(function ExpressionList({ items, emptyText, onItemAdd, onItemExpand, onItemCollapse, details, ...restProps }, ref) {
7
+ import { getExpressionListTestIds } from './ExpressionBuilder.test-ids';
8
+ const LIST_OFFSET = 20;
9
+ const ExpressionList = forwardRef(function ExpressionList({ testId, items = [], emptyText, onItemAdd, onItemExpand, onItemCollapse, details, ...restProps }, ref) {
10
+ const [count, setCount] = useState(Math.min(LIST_OFFSET, items.length));
11
+ const listRef = useRef(null);
12
+ useEffect(() => {
13
+ setCount(Math.min(LIST_OFFSET, items.length));
14
+ }, [items]);
15
+ const consolidatedRef = useConsolidatedRef(ref, listRef);
16
+ useItemIntersection(consolidatedRef, count - 1, () => {
17
+ setCount(prev => Math.min(items.length, prev + LIST_OFFSET));
18
+ }, ':scope > li');
8
19
  const [expandedItems, setExpandedItems] = useState([]);
9
20
  const handleItemExpand = (id) => {
10
21
  setExpandedItems(prev => {
@@ -24,9 +35,10 @@ const ExpressionList = forwardRef(function ExpressionList({ items, emptyText, on
24
35
  return prev.filter(itemId => itemId !== id);
25
36
  });
26
37
  };
27
- return (_jsx(StyledExpressionList, { ...restProps, ref: ref, children: items && items.length > 0 ? (items.map(item => {
38
+ const testIds = useTestIds(testId, getExpressionListTestIds);
39
+ return (_jsx(StyledExpressionList, { ...restProps, ref: consolidatedRef, "data-testid": testIds.root, children: items && items.length > 0 ? (items.slice(0, count).map(item => {
28
40
  return (_createElement(ExpressionItem, { ...item, onAdd: onItemAdd, onExpand: handleItemExpand, onCollapse: handleItemCollapse, expanded: expandedItems.includes(item.id), key: item.id, details: details?.[item.id] }));
29
41
  })) : (_jsx(EmptyState, { message: emptyText })) }));
30
42
  });
31
- export default ExpressionList;
43
+ export default withTestIds(ExpressionList, getExpressionListTestIds);
32
44
  //# sourceMappingURL=ExpressionList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionList.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,cAAc,GAAyD,UAAU,CACrF,SAAS,cAAc,CACrB,EACE,KAAK,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,OAAO,EACP,GAAG,SAAS,EACyB,EACvC,GAA+B;IAE/B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAA8B,EAAE,CAAC,CAAC;IAEpF,MAAM,gBAAgB,GAAG,CAAC,EAA6B,EAAE,EAAE;QACzD,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,SAAS,KAAK,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,EAA6B,EAAE,EAAE;QAC3D,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,SAAS,KAAK,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,oBAAoB,OAAK,SAAS,EAAE,GAAG,EAAE,GAAG,YAC1C,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACf,OAAO,CACL,eAAC,cAAc,OACT,IAAI,EACR,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,kBAAkB,EAC9B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EACzC,GAAG,EAAE,IAAI,CAAC,EAAE,EACZ,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAC3B,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,OAAO,EAAE,SAAS,GAAI,CACnC,GACoB,CACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { forwardRef, useState } from 'react';\nimport type { PropsWithoutRef } from 'react';\n\nimport { EmptyState } from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\n\nimport type { ExpressionItemProps, ExpressionListProps } from './ExpressionBuilder.types';\nimport ExpressionItem from './ExpressionItem';\nimport { StyledExpressionList } from './ExpressionBuilder.styles';\n\nconst ExpressionList: ForwardRefForwardPropsComponent<ExpressionListProps> = forwardRef(\n function ExpressionList(\n {\n items,\n emptyText,\n onItemAdd,\n onItemExpand,\n onItemCollapse,\n details,\n ...restProps\n }: PropsWithoutRef<ExpressionListProps>,\n ref: ExpressionListProps['ref']\n ) {\n const [expandedItems, setExpandedItems] = useState<ExpressionItemProps['id'][]>([]);\n\n const handleItemExpand = (id: ExpressionItemProps['id']) => {\n setExpandedItems(prev => {\n const itemIndex = prev.indexOf(id);\n if (itemIndex !== -1) return prev;\n onItemExpand?.(id);\n return [...prev, id];\n });\n };\n\n const handleItemCollapse = (id: ExpressionItemProps['id']) => {\n setExpandedItems(prev => {\n const itemIndex = prev.indexOf(id);\n if (itemIndex === -1) return prev;\n onItemCollapse?.(id);\n return prev.filter(itemId => itemId !== id);\n });\n };\n\n return (\n <StyledExpressionList {...restProps} ref={ref}>\n {items && items.length > 0 ? (\n items.map(item => {\n return (\n <ExpressionItem\n {...item}\n onAdd={onItemAdd}\n onExpand={handleItemExpand}\n onCollapse={handleItemCollapse}\n expanded={expandedItems.includes(item.id)}\n key={item.id}\n details={details?.[item.id]}\n />\n );\n })\n ) : (\n <EmptyState message={emptyText} />\n )}\n </StyledExpressionList>\n );\n }\n);\n\nexport default ExpressionList;\n"]}
1
+ {"version":3,"file":"ExpressionList.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState, useRef, useEffect, type PropsWithoutRef } from 'react';\n\nimport {\n EmptyState,\n useItemIntersection,\n useConsolidatedRef,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\n\nimport type { ExpressionItemProps, ExpressionListProps } from './ExpressionBuilder.types';\nimport ExpressionItem from './ExpressionItem';\nimport { StyledExpressionList } from './ExpressionBuilder.styles';\nimport { getExpressionListTestIds } from './ExpressionBuilder.test-ids';\n\nconst LIST_OFFSET = 20;\nconst ExpressionList: ForwardRefForwardPropsComponent<ExpressionListProps> = forwardRef(\n function ExpressionList(\n {\n testId,\n items = [],\n emptyText,\n onItemAdd,\n onItemExpand,\n onItemCollapse,\n details,\n ...restProps\n }: PropsWithoutRef<ExpressionListProps>,\n ref: ExpressionListProps['ref']\n ) {\n const [count, setCount] = useState(Math.min(LIST_OFFSET, items.length));\n const listRef = useRef<HTMLUListElement>(null);\n\n useEffect(() => {\n setCount(Math.min(LIST_OFFSET, items.length));\n }, [items]);\n\n const consolidatedRef = useConsolidatedRef(ref, listRef);\n\n useItemIntersection(\n consolidatedRef,\n count - 1,\n () => {\n setCount(prev => Math.min(items.length, prev + LIST_OFFSET));\n },\n ':scope > li'\n );\n const [expandedItems, setExpandedItems] = useState<ExpressionItemProps['id'][]>([]);\n\n const handleItemExpand = (id: ExpressionItemProps['id']) => {\n setExpandedItems(prev => {\n const itemIndex = prev.indexOf(id);\n if (itemIndex !== -1) return prev;\n onItemExpand?.(id);\n return [...prev, id];\n });\n };\n\n const handleItemCollapse = (id: ExpressionItemProps['id']) => {\n setExpandedItems(prev => {\n const itemIndex = prev.indexOf(id);\n if (itemIndex === -1) return prev;\n onItemCollapse?.(id);\n return prev.filter(itemId => itemId !== id);\n });\n };\n const testIds = useTestIds(testId, getExpressionListTestIds);\n return (\n <StyledExpressionList {...restProps} ref={consolidatedRef} data-testid={testIds.root}>\n {items && items.length > 0 ? (\n items.slice(0, count).map(item => {\n return (\n <ExpressionItem\n {...item}\n onAdd={onItemAdd}\n onExpand={handleItemExpand}\n onCollapse={handleItemCollapse}\n expanded={expandedItems.includes(item.id)}\n key={item.id}\n details={details?.[item.id]}\n />\n );\n })\n ) : (\n <EmptyState message={emptyText} />\n )}\n </StyledExpressionList>\n );\n }\n);\n\nexport default withTestIds(ExpressionList, getExpressionListTestIds);\n"]}
@@ -1,8 +1,9 @@
1
1
  export { default } from './ExpressionBuilder';
2
2
  export type { ExpressionListProps, ExpressionItemProps, ExpressionBuilderProps, HandleValue, InputParams } from './ExpressionBuilder.types';
3
- export type { EditorState, CodeEditorProps, AutoCompleteTriggerChar, SuggestionType, CursorPosition, CustomPositionProps } from './CodeEditor/CodeEditor.types';
3
+ export type { EditorState, CodeEditorProps, AutoCompleteTriggerChar, SuggestionType, CursorPosition, CustomPositionProps, LintError } from './CodeEditor/CodeEditor.types';
4
4
  export { default as ExpressionItem } from './ExpressionItem';
5
5
  export { default as ExpressionList } from './ExpressionList';
6
6
  export { default as ExpressionDetails } from './ExpressionDetails';
7
7
  export { default as CodeEditor } from './CodeEditor/CodeEditor';
8
+ export { default as ExpressionBuilderContext } from './ExpressionBuilderContext';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,WAAW,EACX,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,WAAW,EACX,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACV,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -3,4 +3,5 @@ export { default as ExpressionItem } from './ExpressionItem';
3
3
  export { default as ExpressionList } from './ExpressionList';
4
4
  export { default as ExpressionDetails } from './ExpressionDetails';
5
5
  export { default as CodeEditor } from './CodeEditor/CodeEditor';
6
+ export { default as ExpressionBuilderContext } from './ExpressionBuilderContext';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAgB9C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC","sourcesContent":["export { default } from './ExpressionBuilder';\nexport type {\n ExpressionListProps,\n ExpressionItemProps,\n ExpressionBuilderProps,\n HandleValue,\n InputParams\n} from './ExpressionBuilder.types';\nexport type {\n EditorState,\n CodeEditorProps,\n AutoCompleteTriggerChar,\n SuggestionType,\n CursorPosition,\n CustomPositionProps\n} from './CodeEditor/CodeEditor.types';\nexport { default as ExpressionItem } from './ExpressionItem';\nexport { default as ExpressionList } from './ExpressionList';\nexport { default as ExpressionDetails } from './ExpressionDetails';\nexport { default as CodeEditor } from './CodeEditor/CodeEditor';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAiB9C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC","sourcesContent":["export { default } from './ExpressionBuilder';\nexport type {\n ExpressionListProps,\n ExpressionItemProps,\n ExpressionBuilderProps,\n HandleValue,\n InputParams\n} from './ExpressionBuilder.types';\nexport type {\n EditorState,\n CodeEditorProps,\n AutoCompleteTriggerChar,\n SuggestionType,\n CursorPosition,\n CustomPositionProps,\n LintError\n} from './CodeEditor/CodeEditor.types';\nexport { default as ExpressionItem } from './ExpressionItem';\nexport { default as ExpressionList } from './ExpressionList';\nexport { default as ExpressionDetails } from './ExpressionDetails';\nexport { default as CodeEditor } from './CodeEditor/CodeEditor';\nexport { default as ExpressionBuilderContext } from './ExpressionBuilderContext';\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { Ref, KeyboardEvent as ReactKeyboardEvent, MouseEvent } from 'react';
2
- import type { IconProps, MenuItemProps, NoChildrenProp, TestIdProp, MenuProps, FormControlProps, FieldValueListItemProps, Action, LinkProps } from '@pega/cosmos-react-core';
2
+ import type { IconProps, MenuItemProps, NoChildrenProp, TestIdProp, MenuProps, FormControlProps, FieldValueListItemProps, Action, LinkProps, OmitStrict } from '@pega/cosmos-react-core';
3
3
  import type { ParentMenuItemProps } from '@pega/cosmos-react-core/lib/components/Menu/Menu.types';
4
4
  export interface Selected {
5
5
  id: string;
@@ -57,7 +57,7 @@ export interface FieldReferenceDisplayProps extends NoChildrenProp, TestIdProp {
57
57
  /** Ref for the wrapping element. */
58
58
  ref?: Ref<HTMLDivElement>;
59
59
  }
60
- export interface FieldReferenceMenuProps extends Pick<MenuProps, 'scrollAt' | 'loading' | 'loadMore' | 'onCreateNew'> {
60
+ export interface FieldReferenceMenuProps extends Pick<MenuProps, 'itemLayout' | 'scrollAt' | 'loading' | 'loadMore' | 'onCreateNew'> {
61
61
  /** Menu items to display. */
62
62
  items: FieldReferenceMenuItem[];
63
63
  /** The current context that the menu is within. */
@@ -87,9 +87,23 @@ export interface FieldReferenceHandleValue {
87
87
  /** Used to close the menu programmatically. */
88
88
  closeMenu: () => void;
89
89
  }
90
+ export interface FieldReferenceProps extends OmitStrict<FieldReferenceInputProps, 'onFilterChange'> {
91
+ /** Defines the use of FieldReferenceWrapper component
92
+ * fieldPicker represents component usage for fieldReference
93
+ * objectSelect represents component usage for ObjectSelect
94
+ * @default Field
95
+ */
96
+ mode: 'object-select' | 'field-picker';
97
+ onFilterChange?: FieldReferenceInputProps['onFilterChange'];
98
+ }
90
99
  export default interface FieldReferenceInputProps extends NoChildrenProp, TestIdProp, Pick<FormControlProps, 'id' | 'label' | 'labelHidden' | 'required' | 'disabled' | 'readOnly' | 'status' | 'info' | 'placeholder' | 'additionalInfo'> {
91
100
  /** Props related to the menu. */
92
101
  menu: FieldReferenceMenuProps;
102
+ /**
103
+ * If true, tooltips will be shown when hovering over menu items and selected paths.
104
+ * @default true
105
+ */
106
+ showTooltips?: boolean;
93
107
  /**
94
108
  * If true, the current context will be prepended to all field reference paths.
95
109
  * @default false
@@ -1 +1 @@
1
- {"version":3,"file":"FieldReference.types.d.ts","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReference.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldReference.types.d.ts","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReference.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldReference.types.js","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReference.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Ref, KeyboardEvent as ReactKeyboardEvent, MouseEvent } from 'react';\n\nimport type {\n IconProps,\n MenuItemProps,\n NoChildrenProp,\n TestIdProp,\n MenuProps,\n FormControlProps,\n FieldValueListItemProps,\n Action,\n LinkProps\n} from '@pega/cosmos-react-core';\nimport type { ParentMenuItemProps } from '@pega/cosmos-react-core/lib/components/Menu/Menu.types';\n\nexport interface Selected {\n id: string;\n text: string;\n}\n\nexport interface Field {\n /** The unique id for the field. */\n id: string;\n /** The name of the field. */\n name: string;\n /** The type of the field. */\n type?: string;\n /** Props forwarded to the Icon component. */\n icon?: IconProps;\n /** Additional data related to the field. */\n metadata?: {\n name: FieldValueListItemProps['name'];\n value: string;\n }[];\n}\n\nexport interface Context {\n /** The unique id for the context. */\n id: string;\n /** The context label. */\n name: string;\n}\n\nexport interface AltContext extends Context {\n /** Items associated with the context. */\n items: FieldReferenceMenuItem[];\n /** If true or false, the altContext will be selectable. If undefined, the altContext not be selectable. */\n selected?: MenuItemProps['selected'];\n}\n\nexport interface FieldReferenceMenuItem extends Field {\n /** A set of nested child items. If an empty array is provided, the item will still render as a parent. */\n items?: FieldReferenceMenuItem[];\n /** If true or false, the parent item will be selectable. If undefined, the parent will not be selectable. */\n selected?: MenuItemProps['selected'];\n /**\n * Corresponding field item from the source.\n * Useful if the `id` alone is not unique enough to identify the source\n */\n originalItem?: unknown;\n}\n\nexport interface FieldReferenceDisplayProps extends NoChildrenProp, TestIdProp {\n /** The path to the field reference. */\n fieldPath: [Context, ...Field[]] | Field[];\n /** If defined, the fieldPath will render as a Link with these props forwarded. */\n link?: Pick<LinkProps, 'href' | 'previewable' | 'onPreview' | 'target'> & {\n onClick?: (e: MouseEvent) => void;\n };\n /** Pass an array of Action objects to append button(s) inline. */\n actions?: Action[];\n /** Data to render in a tooltip upon hover of the component. */\n tooltipData?: FieldValueListItemProps[];\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n}\n\nexport interface FieldReferenceMenuProps\n extends Pick<MenuProps, 'scrollAt' | 'loading' | 'loadMore' | 'onCreateNew'> {\n /** Menu items to display. */\n items: FieldReferenceMenuItem[];\n /** The current context that the menu is within. */\n currentContext?: Context;\n /** Menu items to display above the standard list. These should be items that are outside of the currentContext. */\n altContexts?: AltContext[];\n /** Parent menu item for drill-down. */\n parentItem?: FieldReferenceMenuItem | AltContext;\n /**\n * A custom label for the create new action.\n * @default 'Create new'\n * */\n createNewLabel?: string;\n}\n\nexport interface FieldReferencedMenuListProps extends TestIdProp {\n items: ParentMenuItemProps['items'];\n id?: string;\n parent?: { id: string; primary: string };\n ref?: Ref<HTMLFieldSetElement>;\n}\n\nexport interface FieldReferenceHandleValue {\n /** Used to open the menu programmatically. */\n openMenu: () => void;\n /** Used to close the menu programmatically. */\n closeMenu: () => void;\n}\n\nexport default interface FieldReferenceInputProps\n extends NoChildrenProp,\n TestIdProp,\n Pick<\n FormControlProps,\n | 'id'\n | 'label'\n | 'labelHidden'\n | 'required'\n | 'disabled'\n | 'readOnly'\n | 'status'\n | 'info'\n | 'placeholder'\n | 'additionalInfo'\n > {\n /** Props related to the menu. */\n menu: FieldReferenceMenuProps;\n /**\n * If true, the current context will be prepended to all field reference paths.\n * @default false\n * */\n showCurrentContext?: boolean;\n /**\n * If true, only a selected leaf node will be shown in the selected path.\n * @default true\n * */\n showPath?: boolean;\n /** Callback fired when an altContext item is clicked. */\n onAltContextClick?: (altContext: AltContext) => void;\n /** The current selection. */\n selected?: Field[];\n /** Callback fired when the selected field path is modified. */\n onSelectedChange: (selectedValue: FieldReferenceMenuItem[]) => void;\n /** The value of the search filter. */\n filterValue?: string;\n /** Callback fired when the filtering input value changes. */\n onFilterChange: (filterValue: string) => void;\n /** If defined, the selected fieldPath will render as a Link when the input is in a resting state, with these props forwarded. */\n link?: FieldReferenceDisplayProps['link'];\n /** Pass an array of Action objects to append button(s) inline when the input is in a selected resting state. */\n actions?: FieldReferenceDisplayProps['actions'];\n /** Callback fired when the Field Reference input gains focus. */\n onFocus?: () => void;\n /**\n * Callback fired when the Field Reference looses focus within its containing element.\n * This is not specific to the input element.\n * Note, behavior will be enhanced in an upcoming release and the input will be the only focusable element.\n */\n onBlur?: () => void;\n /**\n * Fired when the user clicks on the dropdown icon to initiate opening the menu.\n * If you want to offer default menu items without an input value, pass this function.\n * This function can be an appropriate time to fetch menu item data.\n * Remember to set the loading prop to true when fetching data for an empty list.\n *\n * @param open value defining whether the click opens or closes the menu\n */\n onDropdownButtonClick?: (open: boolean) => void;\n /** Fired when user clicks on the Field Reference input. */\n onClick?: (e: MouseEvent) => void;\n /** Fired when menu opens. */\n onMenuOpen?: () => void;\n /**\n * Fired before running default component onKeyDown handler.\n * Returning `false` from this function prevents default onKeyDown handling.\n */\n onKeyDown?: (e: ReactKeyboardEvent) => boolean | void;\n /** Ref that can be used to access the imperative handle. */\n handle?: Ref<FieldReferenceHandleValue>;\n /** Reference to the component's root element. */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
1
+ {"version":3,"file":"FieldReference.types.js","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReference.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Ref, KeyboardEvent as ReactKeyboardEvent, MouseEvent } from 'react';\n\nimport type {\n IconProps,\n MenuItemProps,\n NoChildrenProp,\n TestIdProp,\n MenuProps,\n FormControlProps,\n FieldValueListItemProps,\n Action,\n LinkProps,\n OmitStrict\n} from '@pega/cosmos-react-core';\nimport type { ParentMenuItemProps } from '@pega/cosmos-react-core/lib/components/Menu/Menu.types';\n\nexport interface Selected {\n id: string;\n text: string;\n}\n\nexport interface Field {\n /** The unique id for the field. */\n id: string;\n /** The name of the field. */\n name: string;\n /** The type of the field. */\n type?: string;\n /** Props forwarded to the Icon component. */\n icon?: IconProps;\n /** Additional data related to the field. */\n metadata?: {\n name: FieldValueListItemProps['name'];\n value: string;\n }[];\n}\n\nexport interface Context {\n /** The unique id for the context. */\n id: string;\n /** The context label. */\n name: string;\n}\n\nexport interface AltContext extends Context {\n /** Items associated with the context. */\n items: FieldReferenceMenuItem[];\n /** If true or false, the altContext will be selectable. If undefined, the altContext not be selectable. */\n selected?: MenuItemProps['selected'];\n}\n\nexport interface FieldReferenceMenuItem extends Field {\n /** A set of nested child items. If an empty array is provided, the item will still render as a parent. */\n items?: FieldReferenceMenuItem[];\n /** If true or false, the parent item will be selectable. If undefined, the parent will not be selectable. */\n selected?: MenuItemProps['selected'];\n /**\n * Corresponding field item from the source.\n * Useful if the `id` alone is not unique enough to identify the source\n */\n originalItem?: unknown;\n}\n\nexport interface FieldReferenceDisplayProps extends NoChildrenProp, TestIdProp {\n /** The path to the field reference. */\n fieldPath: [Context, ...Field[]] | Field[];\n /** If defined, the fieldPath will render as a Link with these props forwarded. */\n link?: Pick<LinkProps, 'href' | 'previewable' | 'onPreview' | 'target'> & {\n onClick?: (e: MouseEvent) => void;\n };\n /** Pass an array of Action objects to append button(s) inline. */\n actions?: Action[];\n /** Data to render in a tooltip upon hover of the component. */\n tooltipData?: FieldValueListItemProps[];\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n}\n\nexport interface FieldReferenceMenuProps\n extends Pick<MenuProps, 'itemLayout' | 'scrollAt' | 'loading' | 'loadMore' | 'onCreateNew'> {\n /** Menu items to display. */\n items: FieldReferenceMenuItem[];\n /** The current context that the menu is within. */\n currentContext?: Context;\n /** Menu items to display above the standard list. These should be items that are outside of the currentContext. */\n altContexts?: AltContext[];\n /** Parent menu item for drill-down. */\n parentItem?: FieldReferenceMenuItem | AltContext;\n /**\n * A custom label for the create new action.\n * @default 'Create new'\n * */\n createNewLabel?: string;\n}\n\nexport interface FieldReferencedMenuListProps extends TestIdProp {\n items: ParentMenuItemProps['items'];\n id?: string;\n parent?: { id: string; primary: string };\n ref?: Ref<HTMLFieldSetElement>;\n}\n\nexport interface FieldReferenceHandleValue {\n /** Used to open the menu programmatically. */\n openMenu: () => void;\n /** Used to close the menu programmatically. */\n closeMenu: () => void;\n}\nexport interface FieldReferenceProps\n extends OmitStrict<FieldReferenceInputProps, 'onFilterChange'> {\n /** Defines the use of FieldReferenceWrapper component\n * fieldPicker represents component usage for fieldReference\n * objectSelect represents component usage for ObjectSelect\n * @default Field\n */\n mode: 'object-select' | 'field-picker';\n onFilterChange?: FieldReferenceInputProps['onFilterChange'];\n}\nexport default interface FieldReferenceInputProps\n extends NoChildrenProp,\n TestIdProp,\n Pick<\n FormControlProps,\n | 'id'\n | 'label'\n | 'labelHidden'\n | 'required'\n | 'disabled'\n | 'readOnly'\n | 'status'\n | 'info'\n | 'placeholder'\n | 'additionalInfo'\n > {\n /** Props related to the menu. */\n menu: FieldReferenceMenuProps;\n /**\n * If true, tooltips will be shown when hovering over menu items and selected paths.\n * @default true\n */\n showTooltips?: boolean;\n /**\n * If true, the current context will be prepended to all field reference paths.\n * @default false\n * */\n showCurrentContext?: boolean;\n /**\n * If true, only a selected leaf node will be shown in the selected path.\n * @default true\n * */\n showPath?: boolean;\n /** Callback fired when an altContext item is clicked. */\n onAltContextClick?: (altContext: AltContext) => void;\n /** The current selection. */\n selected?: Field[];\n /** Callback fired when the selected field path is modified. */\n onSelectedChange: (selectedValue: FieldReferenceMenuItem[]) => void;\n /** The value of the search filter. */\n filterValue?: string;\n /** Callback fired when the filtering input value changes. */\n onFilterChange: (filterValue: string) => void;\n /** If defined, the selected fieldPath will render as a Link when the input is in a resting state, with these props forwarded. */\n link?: FieldReferenceDisplayProps['link'];\n /** Pass an array of Action objects to append button(s) inline when the input is in a selected resting state. */\n actions?: FieldReferenceDisplayProps['actions'];\n /** Callback fired when the Field Reference input gains focus. */\n onFocus?: () => void;\n /**\n * Callback fired when the Field Reference looses focus within its containing element.\n * This is not specific to the input element.\n * Note, behavior will be enhanced in an upcoming release and the input will be the only focusable element.\n */\n onBlur?: () => void;\n /**\n * Fired when the user clicks on the dropdown icon to initiate opening the menu.\n * If you want to offer default menu items without an input value, pass this function.\n * This function can be an appropriate time to fetch menu item data.\n * Remember to set the loading prop to true when fetching data for an empty list.\n *\n * @param open value defining whether the click opens or closes the menu\n */\n onDropdownButtonClick?: (open: boolean) => void;\n /** Fired when user clicks on the Field Reference input. */\n onClick?: (e: MouseEvent) => void;\n /** Fired when menu opens. */\n onMenuOpen?: () => void;\n /**\n * Fired before running default component onKeyDown handler.\n * Returning `false` from this function prevents default onKeyDown handling.\n */\n onKeyDown?: (e: ReactKeyboardEvent) => boolean | void;\n /** Ref that can be used to access the imperative handle. */\n handle?: Ref<FieldReferenceHandleValue>;\n /** Reference to the component's root element. */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldReferenceInput.d.ts","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReferenceInput.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,wBAAwB,MAAM,wBAAwB,CAAC;;;;AAqpBnE,wBAA+E"}
1
+ {"version":3,"file":"FieldReferenceInput.d.ts","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReferenceInput.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,wBAAwB,MAAM,wBAAwB,CAAC;;;;AAypBnE,wBAA+E"}
@@ -13,8 +13,8 @@ registerIcon(caretDownIcon, caretUpIcon);
13
13
  const isMobile = navigatorIsAvailable && navigator.userAgent.includes('Mobile');
14
14
  const FieldReferenceInput = forwardRef(function FieldReferenceInput(props, ref) {
15
15
  const uid = useUID();
16
- const { testId, additionalInfo, required, id = uid, label, labelHidden, info, status, readOnly, disabled, placeholder, menu, showCurrentContext, onAltContextClick, selected = [], onSelectedChange, filterValue, onFilterChange, showPath, link, actions, onFocus, onBlur, onDropdownButtonClick: onDropdownButtonClickProp, onMenuOpen, onClick, onKeyDown, handle } = props;
17
- const { items: menuItems, altContexts, currentContext, parentItem, onCreateNew, createNewLabel, scrollAt, loading, loadMore } = menu;
16
+ const { testId, additionalInfo, required, id = uid, label, labelHidden, info, status, readOnly, disabled, placeholder, menu, showTooltips, showCurrentContext, onAltContextClick, selected = [], onSelectedChange, filterValue, onFilterChange, showPath, link, actions, onFocus, onBlur, onDropdownButtonClick: onDropdownButtonClickProp, onMenuOpen, onClick, onKeyDown, handle } = props;
17
+ const { items: menuItems, itemLayout = 'inline', altContexts, currentContext, parentItem, onCreateNew, createNewLabel, scrollAt, loading, loadMore } = menu;
18
18
  const testIds = useTestIds(testId, getFieldReferenceInputTestIds);
19
19
  const bodyRef = useRef(document.body);
20
20
  const [pauseMenuDescendantEvaluation, setPauseMenuDescendantEvaluation] = useState(true);
@@ -97,7 +97,7 @@ const FieldReferenceInput = forwardRef(function FieldReferenceInput(props, ref)
97
97
  primary: item.name,
98
98
  secondary: item.type ? [item.type] : undefined,
99
99
  items: item.items ? formatMenuItems({ items: item.items, context: item }) : undefined,
100
- tooltip: _jsx(FieldValueList, { fields: tooltipData, truncate: false }),
100
+ tooltip: showTooltips ? (_jsx(FieldValueList, { fields: tooltipData, truncate: false })) : undefined,
101
101
  selected: item.selected
102
102
  };
103
103
  });
@@ -323,7 +323,7 @@ const FieldReferenceInput = forwardRef(function FieldReferenceInput(props, ref)
323
323
  inputRef.current?.focus();
324
324
  inputRef.current?.click();
325
325
  }
326
- }, children: [!!selected.length && !open && (_jsx(Grid, { item: { colStart: '1', colEnd: '4' }, children: _jsx(FieldReferenceDisplay, { testId: testId, fieldPath: selectedFieldPath, link: link, actions: formattedActions, tooltipData: tooltipData }) })), !!selected.length && open && showPath && (_jsx(Flex, { container: { gap: 0.25, alignItems: 'center' }, as: StyledSelection, children: [...selectedFieldPath].reverse().map((field, index) => {
326
+ }, children: [!!selected.length && !open && (_jsx(Grid, { item: { colStart: '1', colEnd: '4' }, children: _jsx(FieldReferenceDisplay, { testId: testId, fieldPath: selectedFieldPath, link: link, actions: formattedActions, tooltipData: showTooltips ? tooltipData : undefined }) })), !!selected.length && open && showPath && (_jsx(Flex, { container: { gap: 0.25, alignItems: 'center' }, as: StyledSelection, children: [...selectedFieldPath].reverse().map((field, index) => {
327
327
  if (index === 0 && field.id !== parentItem?.id)
328
328
  return null;
329
329
  return (_jsxs(Fragment, { children: [(index > 0 || showDot) && '.', _jsx(StyledPathSegment, { children: field.name })] }, field.id));
@@ -383,7 +383,7 @@ const FieldReferenceInput = forwardRef(function FieldReferenceInput(props, ref)
383
383
  handleEscape(e);
384
384
  inputRef.current.focus();
385
385
  }
386
- }, children: _jsx(Menu, { testId: testIds.root, as: StyledFieldReferenceMenu, ref: menuRef, listId: listId, id: menuComponentId, role: 'menu', items: formattedMenuItems, itemLayout: 'inline', focusControlEl: inputRef.current || undefined, mode: 'single-select', onItemClick: itemId => {
386
+ }, children: _jsx(Menu, { testId: testIds.root, as: StyledFieldReferenceMenu, ref: menuRef, listId: listId, id: menuComponentId, role: 'menu', items: formattedMenuItems, itemLayout: itemLayout, focusControlEl: inputRef.current || undefined, mode: 'single-select', onItemClick: itemId => {
387
387
  handleItemClick(itemId);
388
388
  setOpen(false);
389
389
  }, onItemExpand: handleItemClick, onItemCollapse: itemId => {
@@ -1 +1 @@
1
- {"version":3,"file":"FieldReferenceInput.js","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReferenceInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n Fragment,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n MouseEvent,\n KeyboardEvent as ReactKeyboardEvent,\n PropsWithoutRef,\n Ref,\n MutableRefObject,\n ChangeEvent\n} from 'react';\n\nimport {\n registerIcon,\n navigatorIsAvailable,\n useUID,\n useTestIds,\n useI18n,\n type MenuProps,\n useElement,\n useConsolidatedRef,\n useFocusWithin,\n type FieldValueListItemProps,\n Icon,\n useEscape,\n Button,\n Flex,\n Grid,\n StyledFormControl,\n VisuallyHiddenText,\n FieldValueList,\n Popover,\n getFocusables,\n Menu,\n FormField,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport { fitToContent } from '@pega/cosmos-react-core/lib/components/Popover/modifiers';\n\nimport type FieldReferenceInputProps from './FieldReference.types';\nimport {\n StyledFieldReferenceInput,\n StyledFieldReferencePicker,\n StyledPathSegment,\n StyledSelection,\n StyledFieldReferenceMenu,\n StyledLeadingDot\n} from './FieldReference.styles';\nimport { getFieldReferenceInputTestIds } from './FieldReference.test-ids';\nimport type {\n FieldReferenceDisplayProps,\n FieldReferencedMenuListProps,\n FieldReferenceMenuItem,\n FieldReferenceMenuProps\n} from './FieldReference.types';\nimport FieldReferenceDisplay from './FieldReferenceDisplay';\nimport FieldReferenceMenuList from './FieldReferenceMenuList';\nimport helpers, { addFieldToPath, removeFieldFromPath } from './helpers';\n\nregisterIcon(caretDownIcon, caretUpIcon);\n\nconst isMobile = navigatorIsAvailable && navigator.userAgent.includes('Mobile');\n\nconst FieldReferenceInput = forwardRef(function FieldReferenceInput(\n props: PropsWithoutRef<FieldReferenceInputProps>,\n ref: Ref<HTMLDivElement>\n) {\n const uid = useUID();\n const {\n testId,\n additionalInfo,\n required,\n id = uid,\n label,\n labelHidden,\n info,\n status,\n readOnly,\n disabled,\n placeholder,\n menu,\n showCurrentContext,\n onAltContextClick,\n selected = [],\n onSelectedChange,\n filterValue,\n onFilterChange,\n showPath,\n link,\n actions,\n onFocus,\n onBlur,\n onDropdownButtonClick: onDropdownButtonClickProp,\n onMenuOpen,\n onClick,\n onKeyDown,\n handle\n } = props;\n const {\n items: menuItems,\n altContexts,\n currentContext,\n parentItem,\n onCreateNew,\n createNewLabel,\n scrollAt,\n loading,\n loadMore\n } = menu;\n\n const testIds = useTestIds(testId, getFieldReferenceInputTestIds);\n const bodyRef = useRef<Element>(document.body);\n\n const [pauseMenuDescendantEvaluation, setPauseMenuDescendantEvaluation] = useState(true);\n const [pauseSelectedDescendantEvaluation, setPauseSelectedDescendantEvaluation] = useState(false);\n const t = useI18n();\n const listId = `${id}-list`;\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [showDot, setShowDot] = useState(false);\n const [modifyingLeafItem, setModifyingLeafItem] = useState(false);\n const [open, setOpen] = useState(false);\n const menuRef: MenuProps['ref'] = useRef(null);\n const menuComponentId = `${id}-listbox`;\n\n // Force a re-render to make sure useFocusWithin has valid elements to set listeners on.\n const [, setContainerEl] = useElement();\n const containerRef = useConsolidatedRef<HTMLDivElement>(ref, setContainerEl);\n\n const toggleMenuDescendantsActive = useCallback((bool: boolean) => {\n setPauseMenuDescendantEvaluation(!bool);\n setPauseSelectedDescendantEvaluation(bool);\n }, []);\n\n const focus = useFocusWithin([containerRef, popoverRef], focused => {\n if (!focused) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n onBlur?.();\n } else {\n onFocus?.();\n if (isMobile) {\n setTimeout(() => {\n containerRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, 150); // delay it to let keyboard expand first\n }\n }\n });\n\n useImperativeHandle(\n handle,\n () => ({\n openMenu: () => {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n inputRef.current?.focus();\n },\n closeMenu: () => {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }),\n [open]\n );\n\n const formatMenuItems = ({\n items,\n context,\n altContextItems\n }: {\n items: FieldReferenceMenuItem[];\n context?: FieldReferenceMenuProps['currentContext'];\n altContextItems?: FieldReferenceMenuProps['altContexts'];\n }): FieldReferencedMenuListProps['items'] => {\n const formattedItems = items\n .sort((a, b) => {\n if (a.selected) return -1;\n if (b.selected) return 1;\n return 0;\n })\n .map(item => {\n const tooltipData: FieldValueListItemProps[] = [\n { name: t('id'), value: item.id, truncate: false },\n { name: t('name'), value: item.name, truncate: false }\n ];\n if (item.type) tooltipData.push({ name: t('type'), value: item.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (item.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n item.metadata.forEach(meta => {\n const override = tooltipData.find(data => data.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n tooltipData.push(...metaData);\n }\n\n return {\n id: item.id,\n visual: item.icon ? <Icon {...item.icon} size='s' /> : undefined,\n primary: item.name,\n secondary: item.type ? [item.type] : undefined,\n items: item.items ? formatMenuItems({ items: item.items, context: item }) : undefined,\n tooltip: <FieldValueList fields={tooltipData} truncate={false} />,\n selected: item.selected\n };\n });\n const formattedAltContextItems = (\n altContextItems && filterValue\n ? helpers.filterBySearch(altContextItems as FieldReferenceMenuItem[], filterValue)\n : altContextItems\n )?.map(item => ({\n id: item.id,\n primary: item.name,\n items: formatMenuItems({ items: item.items || [], context: item }),\n selected: item.selected\n }));\n\n const organizedMenuItems: MenuProps['items'] = [];\n if (!!formattedAltContextItems?.length && !parentItem && !showDot) {\n organizedMenuItems.push(...formattedAltContextItems);\n }\n\n if (!filterValue && context && !parentItem) {\n organizedMenuItems.push({\n id: context.id,\n label: t('current_context', [context.name]),\n items: formattedItems\n });\n } else if (!!filterValue || !context || parentItem) {\n organizedMenuItems.push(...formattedItems);\n }\n\n return organizedMenuItems;\n };\n\n const handleEscape = useCallback(\n (e: KeyboardEvent) => {\n e.preventDefault();\n if (open) {\n e.stopPropagation();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n },\n [open]\n );\n\n useEscape(handleEscape, containerRef, [handleEscape]);\n\n const onInputKeyDown = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n if (onKeyDown?.(e) === false) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowUp':\n if (e.altKey) {\n e.preventDefault();\n if (open) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!open) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n break;\n case 'Tab': {\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem = searchableItems.find(\n item =>\n item.id === filterValue || item.name.toLowerCase() === filterValue?.toLowerCase()\n );\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n }\n\n setOpen(false);\n toggleMenuDescendantsActive(false);\n\n break;\n }\n case 'Backspace': {\n if (showDot && !filterValue) {\n setShowDot(false);\n } else if (open && selected.length) {\n const removeAll = e.altKey || e.metaKey;\n const lastSelectedItem = selected.at(-1);\n\n if (\n !showDot &&\n lastSelectedItem &&\n (removeAll || lastSelectedItem.id === parentItem?.id)\n ) {\n onSelectedChange(removeAll ? [] : removeFieldFromPath(selected, lastSelectedItem.id));\n } else if (filterValue && lastSelectedItem && lastSelectedItem.id !== parentItem?.id) {\n setModifyingLeafItem(true);\n }\n }\n break;\n }\n default:\n }\n },\n [open, selected, readOnly, filterValue, showDot, parentItem, onKeyDown]\n );\n\n const onInputKeyUp = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n\n if (e.key === 'Backspace' && selected.length) {\n const lastSelectedItem = selected.at(-1)!;\n if (!filterValue && modifyingLeafItem && open) {\n onSelectedChange(showPath ? removeFieldFromPath(selected, lastSelectedItem.id) : []);\n setModifyingLeafItem(false);\n }\n }\n },\n [open, selected, readOnly, filterValue]\n );\n\n const onDropdownButtonClick = useCallback(() => {\n onDropdownButtonClickProp?.(!open);\n setOpen(!open);\n }, [open, onDropdownButtonClickProp]);\n\n const dropdownButton = useMemo(() => {\n return (menuItems || onDropdownButtonClickProp) && !readOnly ? (\n <Button\n aria-label={t(open ? 'fieldref_close_list_button_a11y' : 'fieldref_open_list_button_a11y')}\n icon\n variant='simple'\n onClick={onDropdownButtonClick}\n onMouseDown={(e: MouseEvent) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n disabled={disabled}\n tabIndex='-1'\n >\n <Icon name={open ? 'caret-up' : 'caret-down'} />\n </Button>\n ) : null;\n }, [menuItems, onDropdownButtonClick, readOnly, open, disabled]);\n\n const ariaDescribedBy = useMemo(() => {\n let idString = `${id}-inputDescription`;\n\n if (info) {\n idString = idString.concat(` ${id}-info`);\n }\n idString = idString.concat(` ${id}-searchDescription`);\n\n return idString;\n }, [info, id]);\n\n const onInputClick = useCallback(\n (e: MouseEvent) => {\n if (readOnly) return;\n setOpen(true);\n toggleMenuDescendantsActive(true);\n onClick?.(e);\n },\n [readOnly, onClick]\n );\n\n const tooltipData: FieldReferenceDisplayProps['tooltipData'] = useMemo(() => {\n const selectedField = selected.at(-1);\n if (selectedField) {\n const data: FieldValueListItemProps[] = [\n { name: t('id'), value: selectedField.id, truncate: false },\n { name: t('name'), value: selectedField.name, truncate: false }\n ];\n\n if (selectedField.type)\n data.push({ name: t('type'), value: selectedField.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (selectedField.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n selectedField.metadata.forEach(meta => {\n const override = data.find(d => d.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n data.push(...metaData);\n }\n return data;\n }\n\n return undefined;\n }, [selected]);\n\n const formattedMenuItems = useMemo(() => {\n return formatMenuItems({\n items: menuItems || [],\n context: currentContext,\n altContextItems: altContexts\n });\n }, [menuItems, currentContext, altContexts, filterValue, parentItem, showPath, showDot]);\n\n useEffect(() => {\n if (focus && !!filterValue) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }, [filterValue, focus]);\n\n useEffect(() => {\n if (open) {\n onMenuOpen?.();\n if (!!selected.length && selected.at(-1)!.id !== parentItem?.id) {\n onFilterChange(`${selected.at(-1)!.name}${filterValue ?? ''}`);\n }\n } else {\n setShowDot(false);\n onFilterChange('');\n }\n }, [open]);\n\n useEffect(() => {\n if (!showDot && !!selected.length && selected.at(-1)!.id === parentItem?.id) {\n setShowDot(true);\n }\n }, [parentItem, selected]);\n\n const handleItemClick = (itemId: string) => {\n onFilterChange('');\n const matchedItem = menuItems.find(item => item.id === itemId);\n const altContext = altContexts?.find(context => context.id === itemId);\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n } else if (altContext) {\n onAltContextClick?.(altContext);\n }\n };\n\n const ariaControls = open && !pauseMenuDescendantEvaluation ? listId : undefined;\n\n const selectedFieldPath: FieldReferenceDisplayProps['fieldPath'] = useMemo(() => {\n if (!showPath && !!selected.length) return [selected.at(-1)!];\n if (showCurrentContext && currentContext) return [currentContext, ...selected];\n return selected;\n }, [showCurrentContext, currentContext, selected, showPath]);\n\n const formattedActions: FieldReferenceDisplayProps['actions'] = useMemo(() => {\n if (actions)\n return actions.map(action => ({\n ...action,\n onClick: (clickId, e, menuButton) => {\n e.stopPropagation();\n action.onClick?.(clickId, e, menuButton);\n }\n }));\n }, [actions]);\n\n const Comp = (\n <StyledFieldReferencePicker ref={containerRef} id={`${id}-field-reference`}>\n <Grid\n data-testid={testIds.control}\n as={StyledFieldReferenceInput}\n forwardedAs={StyledFormControl}\n spellCheck={false}\n restingState={!!selected.length && !open}\n container={{ alignItems: 'center', cols: '1fr auto' }}\n readOnly={readOnly}\n disabled={disabled}\n status={status}\n >\n <Grid\n container={{\n cols: 'auto auto minmax(8ch, 1fr)',\n autoFlow: 'column',\n alignContent: 'center',\n colGap: 0.25,\n pad: 0.25\n }}\n onClick={(e: MouseEvent<HTMLDivElement>) => {\n // Ignore clicks on selection items\n if (e.target instanceof HTMLElement && !(e.target instanceof HTMLInputElement)) {\n e.stopPropagation();\n inputRef.current?.focus();\n inputRef.current?.click();\n }\n }}\n >\n {!!selected.length && !open && (\n <Grid item={{ colStart: '1', colEnd: '4' }}>\n <FieldReferenceDisplay\n testId={testId}\n fieldPath={selectedFieldPath}\n link={link}\n actions={formattedActions}\n tooltipData={tooltipData}\n />\n </Grid>\n )}\n {!!selected.length && open && showPath && (\n <Flex container={{ gap: 0.25, alignItems: 'center' }} as={StyledSelection}>\n {[...selectedFieldPath].reverse().map((field, index) => {\n if (index === 0 && field.id !== parentItem?.id) return null;\n return (\n <Fragment key={field.id}>\n {(index > 0 || showDot) && '.'}\n <StyledPathSegment>{field.name}</StyledPathSegment>\n </Fragment>\n );\n })}\n </Flex>\n )}\n\n {selected.length === 0 && showDot && <StyledLeadingDot>.</StyledLeadingDot>}\n\n <Grid\n item={{\n colStart: !!selected.length && open ? '3' : '1',\n colEnd: '4',\n alignSelf: 'center'\n }}\n as='input'\n size={1}\n ref={inputRef}\n role='combobox'\n aria-autocomplete='list'\n aria-expanded={!readOnly && !disabled && open}\n aria-controls={!pauseSelectedDescendantEvaluation ? listId : ariaControls}\n aria-haspopup='menu'\n aria-describedby={ariaDescribedBy}\n value={open ? filterValue : ''}\n id={id}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value !== '.') {\n if (e.target.value.endsWith('.')) {\n const search = e.target.value.replace('.', '');\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem =\n menuItems.length === 1\n ? menuItems[0]\n : searchableItems.find(item => item.id === search) ||\n searchableItems.find(\n item => item.name.toLowerCase() === search.toLowerCase()\n );\n if (matchedItem && !!matchedItem.items) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n setShowDot(true);\n onFilterChange('');\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n setShowDot(true);\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }}\n onClick={onInputClick}\n onKeyDown={onInputKeyDown}\n onKeyUp={onInputKeyUp}\n readOnly={readOnly}\n disabled={disabled}\n placeholder={!selected.length && !showDot ? placeholder : undefined}\n autoComplete='off'\n required={undefined}\n />\n </Grid>\n {dropdownButton}\n </Grid>\n\n <Popover\n ref={popoverRef}\n show={open}\n target={containerRef.current}\n placement='bottom-start'\n modifiers={[fitToContent]}\n strategy='fixed'\n onMouseDown={(e: MouseEvent) => e.preventDefault()}\n onKeyDown={(e: KeyboardEvent) => {\n if (!inputRef.current) return;\n\n if (e.key === 'Tab') {\n const popoverFocusables = getFocusables(popoverRef);\n const currentIndex = popoverFocusables.indexOf(e.target as HTMLElement);\n const forward = !e.shiftKey;\n const isLast = currentIndex === popoverFocusables.length - 1;\n\n if (forward && isLast) {\n e.preventDefault();\n const allFocusable = getFocusables(bodyRef as MutableRefObject<HTMLElement>);\n const nextIndex = allFocusable.indexOf(inputRef.current) + 1;\n\n allFocusable[nextIndex]?.focus();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n } else if (!forward && currentIndex === 0) {\n e.preventDefault();\n inputRef.current.focus();\n }\n }\n if (e.key === 'Escape') {\n handleEscape(e);\n inputRef.current.focus();\n }\n }}\n >\n <Menu\n testId={testIds.root}\n as={StyledFieldReferenceMenu}\n ref={menuRef}\n listId={listId}\n id={menuComponentId}\n role='menu'\n items={formattedMenuItems}\n itemLayout='inline'\n focusControlEl={inputRef.current || undefined}\n mode='single-select'\n onItemClick={itemId => {\n handleItemClick(itemId);\n setOpen(false);\n }}\n onItemExpand={handleItemClick}\n onItemCollapse={itemId => {\n onFilterChange('');\n setShowDot(false);\n onSelectedChange(removeFieldFromPath(selected, itemId));\n }}\n aria-label={t('menu_option_list')}\n pauseDescendantEvaluation={pauseMenuDescendantEvaluation}\n arrowNavigationUnsupported\n footer={\n onCreateNew ? (\n <Button variant='link' onClick={onCreateNew}>\n <Icon name='plus' /> {createNewLabel || t('create_new')}\n </Button>\n ) : undefined\n }\n scrollAt={scrollAt}\n loading={loading}\n loadMore={loadMore}\n menuList={\n <FieldReferenceMenuList\n id={listId}\n items={formattedMenuItems}\n parent={\n parentItem && !filterValue\n ? { id: parentItem.id, primary: parentItem.name }\n : undefined\n }\n aria-labelledby={`${menuComponentId}-menuLabel`}\n />\n }\n />\n </Popover>\n </StyledFieldReferencePicker>\n );\n\n return (\n <>\n {label ? (\n <FormField\n testId={testIds}\n label={label}\n labelHidden={labelHidden}\n id={id}\n info={info}\n status={status}\n required={required}\n disabled={disabled}\n additionalInfo={additionalInfo}\n >\n {Comp}\n </FormField>\n ) : (\n Comp\n )}\n <VisuallyHiddenText id={`${id}-inputDescription`} aria-hidden>\n {`${t('fieldref_open_close')} `}\n </VisuallyHiddenText>\n <VisuallyHiddenText id={`${id}-searchDescription`} aria-hidden>\n {t('fieldref_search_instructions')}\n </VisuallyHiddenText>\n </>\n );\n});\n\nexport default withTestIds(FieldReferenceInput, getFieldReferenceInputTestIds);\n"]}
1
+ {"version":3,"file":"FieldReferenceInput.js","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReferenceInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n Fragment,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n MouseEvent,\n KeyboardEvent as ReactKeyboardEvent,\n PropsWithoutRef,\n Ref,\n MutableRefObject,\n ChangeEvent\n} from 'react';\n\nimport {\n registerIcon,\n navigatorIsAvailable,\n useUID,\n useTestIds,\n useI18n,\n type MenuProps,\n useElement,\n useConsolidatedRef,\n useFocusWithin,\n type FieldValueListItemProps,\n Icon,\n useEscape,\n Button,\n Flex,\n Grid,\n StyledFormControl,\n VisuallyHiddenText,\n FieldValueList,\n Popover,\n getFocusables,\n Menu,\n FormField,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport { fitToContent } from '@pega/cosmos-react-core/lib/components/Popover/modifiers';\n\nimport type FieldReferenceInputProps from './FieldReference.types';\nimport {\n StyledFieldReferenceInput,\n StyledFieldReferencePicker,\n StyledPathSegment,\n StyledSelection,\n StyledFieldReferenceMenu,\n StyledLeadingDot\n} from './FieldReference.styles';\nimport { getFieldReferenceInputTestIds } from './FieldReference.test-ids';\nimport type {\n FieldReferenceDisplayProps,\n FieldReferencedMenuListProps,\n FieldReferenceMenuItem,\n FieldReferenceMenuProps\n} from './FieldReference.types';\nimport FieldReferenceDisplay from './FieldReferenceDisplay';\nimport FieldReferenceMenuList from './FieldReferenceMenuList';\nimport helpers, { addFieldToPath, removeFieldFromPath } from './helpers';\n\nregisterIcon(caretDownIcon, caretUpIcon);\n\nconst isMobile = navigatorIsAvailable && navigator.userAgent.includes('Mobile');\n\nconst FieldReferenceInput = forwardRef(function FieldReferenceInput(\n props: PropsWithoutRef<FieldReferenceInputProps>,\n ref: Ref<HTMLDivElement>\n) {\n const uid = useUID();\n const {\n testId,\n additionalInfo,\n required,\n id = uid,\n label,\n labelHidden,\n info,\n status,\n readOnly,\n disabled,\n placeholder,\n menu,\n showTooltips,\n showCurrentContext,\n onAltContextClick,\n selected = [],\n onSelectedChange,\n filterValue,\n onFilterChange,\n showPath,\n link,\n actions,\n onFocus,\n onBlur,\n onDropdownButtonClick: onDropdownButtonClickProp,\n onMenuOpen,\n onClick,\n onKeyDown,\n handle\n } = props;\n const {\n items: menuItems,\n itemLayout = 'inline',\n altContexts,\n currentContext,\n parentItem,\n onCreateNew,\n createNewLabel,\n scrollAt,\n loading,\n loadMore\n } = menu;\n\n const testIds = useTestIds(testId, getFieldReferenceInputTestIds);\n const bodyRef = useRef<Element>(document.body);\n\n const [pauseMenuDescendantEvaluation, setPauseMenuDescendantEvaluation] = useState(true);\n const [pauseSelectedDescendantEvaluation, setPauseSelectedDescendantEvaluation] = useState(false);\n const t = useI18n();\n const listId = `${id}-list`;\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [showDot, setShowDot] = useState(false);\n const [modifyingLeafItem, setModifyingLeafItem] = useState(false);\n const [open, setOpen] = useState(false);\n const menuRef: MenuProps['ref'] = useRef(null);\n const menuComponentId = `${id}-listbox`;\n\n // Force a re-render to make sure useFocusWithin has valid elements to set listeners on.\n const [, setContainerEl] = useElement();\n const containerRef = useConsolidatedRef<HTMLDivElement>(ref, setContainerEl);\n\n const toggleMenuDescendantsActive = useCallback((bool: boolean) => {\n setPauseMenuDescendantEvaluation(!bool);\n setPauseSelectedDescendantEvaluation(bool);\n }, []);\n\n const focus = useFocusWithin([containerRef, popoverRef], focused => {\n if (!focused) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n onBlur?.();\n } else {\n onFocus?.();\n if (isMobile) {\n setTimeout(() => {\n containerRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, 150); // delay it to let keyboard expand first\n }\n }\n });\n\n useImperativeHandle(\n handle,\n () => ({\n openMenu: () => {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n inputRef.current?.focus();\n },\n closeMenu: () => {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }),\n [open]\n );\n\n const formatMenuItems = ({\n items,\n context,\n altContextItems\n }: {\n items: FieldReferenceMenuItem[];\n context?: FieldReferenceMenuProps['currentContext'];\n altContextItems?: FieldReferenceMenuProps['altContexts'];\n }): FieldReferencedMenuListProps['items'] => {\n const formattedItems = items\n .sort((a, b) => {\n if (a.selected) return -1;\n if (b.selected) return 1;\n return 0;\n })\n .map(item => {\n const tooltipData: FieldValueListItemProps[] = [\n { name: t('id'), value: item.id, truncate: false },\n { name: t('name'), value: item.name, truncate: false }\n ];\n if (item.type) tooltipData.push({ name: t('type'), value: item.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (item.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n item.metadata.forEach(meta => {\n const override = tooltipData.find(data => data.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n tooltipData.push(...metaData);\n }\n\n return {\n id: item.id,\n visual: item.icon ? <Icon {...item.icon} size='s' /> : undefined,\n primary: item.name,\n secondary: item.type ? [item.type] : undefined,\n items: item.items ? formatMenuItems({ items: item.items, context: item }) : undefined,\n tooltip: showTooltips ? (\n <FieldValueList fields={tooltipData} truncate={false} />\n ) : undefined,\n selected: item.selected\n };\n });\n const formattedAltContextItems = (\n altContextItems && filterValue\n ? helpers.filterBySearch(altContextItems as FieldReferenceMenuItem[], filterValue)\n : altContextItems\n )?.map(item => ({\n id: item.id,\n primary: item.name,\n items: formatMenuItems({ items: item.items || [], context: item }),\n selected: item.selected\n }));\n\n const organizedMenuItems: MenuProps['items'] = [];\n if (!!formattedAltContextItems?.length && !parentItem && !showDot) {\n organizedMenuItems.push(...formattedAltContextItems);\n }\n\n if (!filterValue && context && !parentItem) {\n organizedMenuItems.push({\n id: context.id,\n label: t('current_context', [context.name]),\n items: formattedItems\n });\n } else if (!!filterValue || !context || parentItem) {\n organizedMenuItems.push(...formattedItems);\n }\n\n return organizedMenuItems;\n };\n\n const handleEscape = useCallback(\n (e: KeyboardEvent) => {\n e.preventDefault();\n if (open) {\n e.stopPropagation();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n },\n [open]\n );\n\n useEscape(handleEscape, containerRef, [handleEscape]);\n\n const onInputKeyDown = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n if (onKeyDown?.(e) === false) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowUp':\n if (e.altKey) {\n e.preventDefault();\n if (open) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!open) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n break;\n case 'Tab': {\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem = searchableItems.find(\n item =>\n item.id === filterValue || item.name.toLowerCase() === filterValue?.toLowerCase()\n );\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n }\n\n setOpen(false);\n toggleMenuDescendantsActive(false);\n\n break;\n }\n case 'Backspace': {\n if (showDot && !filterValue) {\n setShowDot(false);\n } else if (open && selected.length) {\n const removeAll = e.altKey || e.metaKey;\n const lastSelectedItem = selected.at(-1);\n\n if (\n !showDot &&\n lastSelectedItem &&\n (removeAll || lastSelectedItem.id === parentItem?.id)\n ) {\n onSelectedChange(removeAll ? [] : removeFieldFromPath(selected, lastSelectedItem.id));\n } else if (filterValue && lastSelectedItem && lastSelectedItem.id !== parentItem?.id) {\n setModifyingLeafItem(true);\n }\n }\n break;\n }\n default:\n }\n },\n [open, selected, readOnly, filterValue, showDot, parentItem, onKeyDown]\n );\n\n const onInputKeyUp = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n\n if (e.key === 'Backspace' && selected.length) {\n const lastSelectedItem = selected.at(-1)!;\n if (!filterValue && modifyingLeafItem && open) {\n onSelectedChange(showPath ? removeFieldFromPath(selected, lastSelectedItem.id) : []);\n setModifyingLeafItem(false);\n }\n }\n },\n [open, selected, readOnly, filterValue]\n );\n\n const onDropdownButtonClick = useCallback(() => {\n onDropdownButtonClickProp?.(!open);\n setOpen(!open);\n }, [open, onDropdownButtonClickProp]);\n\n const dropdownButton = useMemo(() => {\n return (menuItems || onDropdownButtonClickProp) && !readOnly ? (\n <Button\n aria-label={t(open ? 'fieldref_close_list_button_a11y' : 'fieldref_open_list_button_a11y')}\n icon\n variant='simple'\n onClick={onDropdownButtonClick}\n onMouseDown={(e: MouseEvent) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n disabled={disabled}\n tabIndex='-1'\n >\n <Icon name={open ? 'caret-up' : 'caret-down'} />\n </Button>\n ) : null;\n }, [menuItems, onDropdownButtonClick, readOnly, open, disabled]);\n\n const ariaDescribedBy = useMemo(() => {\n let idString = `${id}-inputDescription`;\n\n if (info) {\n idString = idString.concat(` ${id}-info`);\n }\n idString = idString.concat(` ${id}-searchDescription`);\n\n return idString;\n }, [info, id]);\n\n const onInputClick = useCallback(\n (e: MouseEvent) => {\n if (readOnly) return;\n setOpen(true);\n toggleMenuDescendantsActive(true);\n onClick?.(e);\n },\n [readOnly, onClick]\n );\n\n const tooltipData: FieldReferenceDisplayProps['tooltipData'] = useMemo(() => {\n const selectedField = selected.at(-1);\n if (selectedField) {\n const data: FieldValueListItemProps[] = [\n { name: t('id'), value: selectedField.id, truncate: false },\n { name: t('name'), value: selectedField.name, truncate: false }\n ];\n\n if (selectedField.type)\n data.push({ name: t('type'), value: selectedField.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (selectedField.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n selectedField.metadata.forEach(meta => {\n const override = data.find(d => d.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n data.push(...metaData);\n }\n return data;\n }\n\n return undefined;\n }, [selected]);\n\n const formattedMenuItems = useMemo(() => {\n return formatMenuItems({\n items: menuItems || [],\n context: currentContext,\n altContextItems: altContexts\n });\n }, [menuItems, currentContext, altContexts, filterValue, parentItem, showPath, showDot]);\n\n useEffect(() => {\n if (focus && !!filterValue) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }, [filterValue, focus]);\n\n useEffect(() => {\n if (open) {\n onMenuOpen?.();\n if (!!selected.length && selected.at(-1)!.id !== parentItem?.id) {\n onFilterChange(`${selected.at(-1)!.name}${filterValue ?? ''}`);\n }\n } else {\n setShowDot(false);\n onFilterChange('');\n }\n }, [open]);\n\n useEffect(() => {\n if (!showDot && !!selected.length && selected.at(-1)!.id === parentItem?.id) {\n setShowDot(true);\n }\n }, [parentItem, selected]);\n\n const handleItemClick = (itemId: string) => {\n onFilterChange('');\n const matchedItem = menuItems.find(item => item.id === itemId);\n const altContext = altContexts?.find(context => context.id === itemId);\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n } else if (altContext) {\n onAltContextClick?.(altContext);\n }\n };\n\n const ariaControls = open && !pauseMenuDescendantEvaluation ? listId : undefined;\n\n const selectedFieldPath: FieldReferenceDisplayProps['fieldPath'] = useMemo(() => {\n if (!showPath && !!selected.length) return [selected.at(-1)!];\n if (showCurrentContext && currentContext) return [currentContext, ...selected];\n return selected;\n }, [showCurrentContext, currentContext, selected, showPath]);\n\n const formattedActions: FieldReferenceDisplayProps['actions'] = useMemo(() => {\n if (actions)\n return actions.map(action => ({\n ...action,\n onClick: (clickId, e, menuButton) => {\n e.stopPropagation();\n action.onClick?.(clickId, e, menuButton);\n }\n }));\n }, [actions]);\n\n const Comp = (\n <StyledFieldReferencePicker ref={containerRef} id={`${id}-field-reference`}>\n <Grid\n data-testid={testIds.control}\n as={StyledFieldReferenceInput}\n forwardedAs={StyledFormControl}\n spellCheck={false}\n restingState={!!selected.length && !open}\n container={{ alignItems: 'center', cols: '1fr auto' }}\n readOnly={readOnly}\n disabled={disabled}\n status={status}\n >\n <Grid\n container={{\n cols: 'auto auto minmax(8ch, 1fr)',\n autoFlow: 'column',\n alignContent: 'center',\n colGap: 0.25,\n pad: 0.25\n }}\n onClick={(e: MouseEvent<HTMLDivElement>) => {\n // Ignore clicks on selection items\n if (e.target instanceof HTMLElement && !(e.target instanceof HTMLInputElement)) {\n e.stopPropagation();\n inputRef.current?.focus();\n inputRef.current?.click();\n }\n }}\n >\n {!!selected.length && !open && (\n <Grid item={{ colStart: '1', colEnd: '4' }}>\n <FieldReferenceDisplay\n testId={testId}\n fieldPath={selectedFieldPath}\n link={link}\n actions={formattedActions}\n tooltipData={showTooltips ? tooltipData : undefined}\n />\n </Grid>\n )}\n {!!selected.length && open && showPath && (\n <Flex container={{ gap: 0.25, alignItems: 'center' }} as={StyledSelection}>\n {[...selectedFieldPath].reverse().map((field, index) => {\n if (index === 0 && field.id !== parentItem?.id) return null;\n return (\n <Fragment key={field.id}>\n {(index > 0 || showDot) && '.'}\n <StyledPathSegment>{field.name}</StyledPathSegment>\n </Fragment>\n );\n })}\n </Flex>\n )}\n\n {selected.length === 0 && showDot && <StyledLeadingDot>.</StyledLeadingDot>}\n\n <Grid\n item={{\n colStart: !!selected.length && open ? '3' : '1',\n colEnd: '4',\n alignSelf: 'center'\n }}\n as='input'\n size={1}\n ref={inputRef}\n role='combobox'\n aria-autocomplete='list'\n aria-expanded={!readOnly && !disabled && open}\n aria-controls={!pauseSelectedDescendantEvaluation ? listId : ariaControls}\n aria-haspopup='menu'\n aria-describedby={ariaDescribedBy}\n value={open ? filterValue : ''}\n id={id}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value !== '.') {\n if (e.target.value.endsWith('.')) {\n const search = e.target.value.replace('.', '');\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem =\n menuItems.length === 1\n ? menuItems[0]\n : searchableItems.find(item => item.id === search) ||\n searchableItems.find(\n item => item.name.toLowerCase() === search.toLowerCase()\n );\n if (matchedItem && !!matchedItem.items) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n setShowDot(true);\n onFilterChange('');\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n setShowDot(true);\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }}\n onClick={onInputClick}\n onKeyDown={onInputKeyDown}\n onKeyUp={onInputKeyUp}\n readOnly={readOnly}\n disabled={disabled}\n placeholder={!selected.length && !showDot ? placeholder : undefined}\n autoComplete='off'\n required={undefined}\n />\n </Grid>\n {dropdownButton}\n </Grid>\n\n <Popover\n ref={popoverRef}\n show={open}\n target={containerRef.current}\n placement='bottom-start'\n modifiers={[fitToContent]}\n strategy='fixed'\n onMouseDown={(e: MouseEvent) => e.preventDefault()}\n onKeyDown={(e: KeyboardEvent) => {\n if (!inputRef.current) return;\n\n if (e.key === 'Tab') {\n const popoverFocusables = getFocusables(popoverRef);\n const currentIndex = popoverFocusables.indexOf(e.target as HTMLElement);\n const forward = !e.shiftKey;\n const isLast = currentIndex === popoverFocusables.length - 1;\n\n if (forward && isLast) {\n e.preventDefault();\n const allFocusable = getFocusables(bodyRef as MutableRefObject<HTMLElement>);\n const nextIndex = allFocusable.indexOf(inputRef.current) + 1;\n\n allFocusable[nextIndex]?.focus();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n } else if (!forward && currentIndex === 0) {\n e.preventDefault();\n inputRef.current.focus();\n }\n }\n if (e.key === 'Escape') {\n handleEscape(e);\n inputRef.current.focus();\n }\n }}\n >\n <Menu\n testId={testIds.root}\n as={StyledFieldReferenceMenu}\n ref={menuRef}\n listId={listId}\n id={menuComponentId}\n role='menu'\n items={formattedMenuItems}\n itemLayout={itemLayout}\n focusControlEl={inputRef.current || undefined}\n mode='single-select'\n onItemClick={itemId => {\n handleItemClick(itemId);\n setOpen(false);\n }}\n onItemExpand={handleItemClick}\n onItemCollapse={itemId => {\n onFilterChange('');\n setShowDot(false);\n onSelectedChange(removeFieldFromPath(selected, itemId));\n }}\n aria-label={t('menu_option_list')}\n pauseDescendantEvaluation={pauseMenuDescendantEvaluation}\n arrowNavigationUnsupported\n footer={\n onCreateNew ? (\n <Button variant='link' onClick={onCreateNew}>\n <Icon name='plus' /> {createNewLabel || t('create_new')}\n </Button>\n ) : undefined\n }\n scrollAt={scrollAt}\n loading={loading}\n loadMore={loadMore}\n menuList={\n <FieldReferenceMenuList\n id={listId}\n items={formattedMenuItems}\n parent={\n parentItem && !filterValue\n ? { id: parentItem.id, primary: parentItem.name }\n : undefined\n }\n aria-labelledby={`${menuComponentId}-menuLabel`}\n />\n }\n />\n </Popover>\n </StyledFieldReferencePicker>\n );\n\n return (\n <>\n {label ? (\n <FormField\n testId={testIds}\n label={label}\n labelHidden={labelHidden}\n id={id}\n info={info}\n status={status}\n required={required}\n disabled={disabled}\n additionalInfo={additionalInfo}\n >\n {Comp}\n </FormField>\n ) : (\n Comp\n )}\n <VisuallyHiddenText id={`${id}-inputDescription`} aria-hidden>\n {`${t('fieldref_open_close')} `}\n </VisuallyHiddenText>\n <VisuallyHiddenText id={`${id}-searchDescription`} aria-hidden>\n {t('fieldref_search_instructions')}\n </VisuallyHiddenText>\n </>\n );\n});\n\nexport default withTestIds(FieldReferenceInput, getFieldReferenceInputTestIds);\n"]}
@@ -1,4 +1,10 @@
1
- import type { Field, FieldReferenceMenuItem, FieldReferenceMenuProps } from './FieldReference.types';
1
+ import type { Field, FieldReferenceMenuItem, FieldReferenceMenuProps, AltContext } from './FieldReference.types';
2
+ type ItemProp = FieldReferenceMenuItem | AltContext;
3
+ export declare const isFieldReferenceMenuItem: (item: FieldReferenceMenuItem | AltContext) => item is FieldReferenceMenuItem;
4
+ export declare const filterMenuItems: (items: ItemProp[]) => FieldReferenceMenuItem[];
5
+ export declare const flatten: (items: ItemProp[], ancestors?: ItemProp[], options?: {
6
+ parentFirst?: boolean;
7
+ }) => ItemProp[];
2
8
  declare const helpers: {
3
9
  getItem(items: FieldReferenceMenuItem[], id: Field["id"]): FieldReferenceMenuItem | undefined;
4
10
  toggleSelected(items: FieldReferenceMenuItem[], id: Field["id"], bool: boolean): FieldReferenceMenuItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/FieldReference/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,QAAA,MAAM,OAAO;mBACI,sBAAsB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,GAAG,SAAS;0BAoBpF,sBAAsB,EAAE,MAC3B,KAAK,CAAC,IAAI,CAAC,QACT,OAAO,GACZ,sBAAsB,EAAE;sBAoBT,sBAAsB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,EAAE;wBAIlE,sBAAsB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,EAAE;mBAK/E,sBAAsB,EAAE,MAC3B,CACF,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,sBAAsB,EAAE,KAC5B,sBAAsB,GAC1B,sBAAsB,EAAE;0BAeL,sBAAsB,EAAE,eAAe,MAAM,GAAG,sBAAsB,EAAE;CA0B/F,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,MAAM,KAAK,EAAE,EACb,OAAO,KAAK,EACZ,YAAY,uBAAuB,CAAC,YAAY,CAAC,KAChD,KAAK,EAMP,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,KAAK,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAG,KAAK,EAczE,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/FieldReference/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACX,MAAM,wBAAwB,CAAC;AAEhC,KAAK,QAAQ,GAAG,sBAAsB,GAAG,UAAU,CAAC;AAEpD,eAAO,MAAM,wBAAwB,GACnC,MAAM,sBAAsB,GAAG,UAAU,KACxC,IAAI,IAAI,sBAEV,CAAC;AAMF,eAAO,MAAM,eAAe,GAAI,OAAO,QAAQ,EAAE,6BAIhD,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,OAAO,QAAQ,EAAE,EACjB,YAAW,QAAQ,EAAO,EAC1B,UAAU;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,KAClC,QAAQ,EAqBV,CAAC;AAEF,QAAA,MAAM,OAAO;mBACI,sBAAsB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,GAAG,SAAS;0BAoBpF,sBAAsB,EAAE,MAC3B,KAAK,CAAC,IAAI,CAAC,QACT,OAAO,GACZ,sBAAsB,EAAE;sBAoBT,sBAAsB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,EAAE;wBAIlE,sBAAsB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,EAAE;mBAK/E,sBAAsB,EAAE,MAC3B,CACF,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,sBAAsB,EAAE,KAC5B,sBAAsB,GAC1B,sBAAsB,EAAE;0BAeL,sBAAsB,EAAE,eAAe,MAAM,GAAG,sBAAsB,EAAE;CA0B/F,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,MAAM,KAAK,EAAE,EACb,OAAO,KAAK,EACZ,YAAY,uBAAuB,CAAC,YAAY,CAAC,KAChD,KAAK,EAMP,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,KAAK,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAG,KAAK,EAczE,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,4 +1,34 @@
1
- import { createStringMatcher } from '@pega/cosmos-react-core';
1
+ import { createStringMatcher, hasProp } from '@pega/cosmos-react-core';
2
+ export const isFieldReferenceMenuItem = (item) => {
3
+ return hasProp(item, 'type');
4
+ };
5
+ const filterReferenceMenuItem = (items) => {
6
+ return items.filter(item => isFieldReferenceMenuItem(item));
7
+ };
8
+ export const filterMenuItems = (items) => {
9
+ return filterReferenceMenuItem(items).filter(value => {
10
+ return !value.items;
11
+ });
12
+ };
13
+ export const flatten = (items, ancestors = [], options) => {
14
+ let allItems = [];
15
+ let leafItems = [];
16
+ items.forEach((item) => {
17
+ if (item.id) {
18
+ allItems.push({ ...item });
19
+ }
20
+ if (item.items) {
21
+ const children = flatten(item.items, [...ancestors, item], options);
22
+ if (options && options.parentFirst) {
23
+ leafItems = [...leafItems, ...children];
24
+ }
25
+ else {
26
+ allItems = [...allItems, ...children];
27
+ }
28
+ }
29
+ });
30
+ return options && options.parentFirst ? [...allItems, ...leafItems] : allItems;
31
+ };
2
32
  const helpers = {
3
33
  getItem(items, id) {
4
34
  let found;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/FieldReference/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { createStringMatcher } from '@pega/cosmos-react-core';\n\nimport type {\n Field,\n FieldReferenceMenuItem,\n FieldReferenceMenuProps\n} from './FieldReference.types';\n\nconst helpers = {\n getItem(items: FieldReferenceMenuItem[], id: Field['id']): FieldReferenceMenuItem | undefined {\n let found: FieldReferenceMenuItem | undefined;\n items.some(item => {\n if (item.id === id) {\n found = item;\n return true;\n }\n\n if (item.items) {\n found = this.getItem(item.items, id);\n return !!found;\n }\n\n return false;\n });\n\n return found;\n },\n\n toggleSelected(\n items: FieldReferenceMenuItem[],\n id: Field['id'],\n bool: boolean\n ): FieldReferenceMenuItem[] {\n return this.mapTree(items, item => {\n if (item.id === id) {\n return {\n ...item,\n selected: bool\n };\n }\n\n if (item.selected) {\n return {\n ...item,\n selected: false\n };\n }\n\n return item;\n });\n },\n\n selectItem(items: FieldReferenceMenuItem[], id: Field['id']): FieldReferenceMenuItem[] {\n return this.toggleSelected(items, id, true);\n },\n\n deselectItem(items: FieldReferenceMenuItem[], id: Field['id']): FieldReferenceMenuItem[] {\n return this.toggleSelected(items, id, false);\n },\n\n mapTree(\n items: FieldReferenceMenuItem[],\n fn: (\n item: FieldReferenceMenuItem,\n index: number,\n array: FieldReferenceMenuItem[]\n ) => FieldReferenceMenuItem\n ): FieldReferenceMenuItem[] {\n return items.map((item, index, array) => {\n let newItem = item;\n\n if (item.items) {\n newItem = {\n ...newItem,\n items: this.mapTree(item.items, fn) as FieldReferenceMenuItem[]\n };\n }\n\n return fn(newItem, index, array);\n });\n },\n\n filterBySearch(items: FieldReferenceMenuItem[], searchValue: string): FieldReferenceMenuItem[] {\n const exactSearchRegex = createStringMatcher(searchValue, 'exact');\n const startsWithSearchRegex = createStringMatcher(searchValue, 'start');\n const containsSearchRegex = createStringMatcher(searchValue, 'contains');\n\n const exactSearchResults = items.filter(({ id, name }: FieldReferenceMenuItem) => {\n return exactSearchRegex.test(id) || exactSearchRegex.test(name);\n });\n\n const startsWithSearchResults = items.filter(({ id, name }: FieldReferenceMenuItem) => {\n return (\n !exactSearchResults.some(item => item.id === id) &&\n (startsWithSearchRegex.test(id) || startsWithSearchRegex.test(name))\n );\n });\n\n const containsSearchResults = items.filter(({ id, name }: FieldReferenceMenuItem) => {\n return (\n !exactSearchResults.some(item => item.id === id) &&\n !startsWithSearchResults.some(item => item.id === id) &&\n (containsSearchRegex.test(id) || containsSearchRegex.test(name))\n );\n });\n\n return [...exactSearchResults, ...startsWithSearchResults, ...containsSearchResults];\n }\n};\n\nexport const addFieldToPath = (\n path: Field[],\n field: Field,\n parentItem: FieldReferenceMenuProps['parentItem']\n): Field[] => {\n if (!path.length) return [field];\n if (path[path.length - 1].id !== parentItem?.id) {\n return [...path.slice(0, path.length - 1), field];\n }\n return [...path, field];\n};\n\nexport const removeFieldFromPath = (path: Field[], id: Field['id']): Field[] => {\n if (!path.length) return [];\n\n const newPath = [...path];\n let lastItem = newPath.pop();\n while (lastItem) {\n if (lastItem.id === id) {\n break;\n } else {\n lastItem = newPath.pop();\n }\n }\n\n return newPath;\n};\n\nexport default helpers;\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/FieldReference/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { createStringMatcher, hasProp } from '@pega/cosmos-react-core';\n\nimport type {\n Field,\n FieldReferenceMenuItem,\n FieldReferenceMenuProps,\n AltContext\n} from './FieldReference.types';\n\ntype ItemProp = FieldReferenceMenuItem | AltContext;\n\nexport const isFieldReferenceMenuItem = (\n item: FieldReferenceMenuItem | AltContext\n): item is FieldReferenceMenuItem => {\n return hasProp(item, 'type');\n};\n\nconst filterReferenceMenuItem = (items: ItemProp[]) => {\n return items.filter(item => isFieldReferenceMenuItem(item));\n};\n\nexport const filterMenuItems = (items: ItemProp[]) => {\n return filterReferenceMenuItem(items).filter(value => {\n return !value.items;\n });\n};\n\nexport const flatten = (\n items: ItemProp[],\n ancestors: ItemProp[] = [],\n options?: { parentFirst?: boolean }\n): ItemProp[] => {\n let allItems: ItemProp[] = [];\n let leafItems: ItemProp[] = [];\n\n items.forEach((item: ItemProp) => {\n if (item.id) {\n allItems.push({ ...item });\n }\n\n if (item.items) {\n const children = flatten(item.items, [...ancestors, item], options);\n\n if (options && options.parentFirst) {\n leafItems = [...leafItems, ...children];\n } else {\n allItems = [...allItems, ...children];\n }\n }\n });\n\n return options && options.parentFirst ? [...allItems, ...leafItems] : allItems;\n};\n\nconst helpers = {\n getItem(items: FieldReferenceMenuItem[], id: Field['id']): FieldReferenceMenuItem | undefined {\n let found: FieldReferenceMenuItem | undefined;\n items.some(item => {\n if (item.id === id) {\n found = item;\n return true;\n }\n\n if (item.items) {\n found = this.getItem(item.items, id);\n return !!found;\n }\n\n return false;\n });\n\n return found;\n },\n\n toggleSelected(\n items: FieldReferenceMenuItem[],\n id: Field['id'],\n bool: boolean\n ): FieldReferenceMenuItem[] {\n return this.mapTree(items, item => {\n if (item.id === id) {\n return {\n ...item,\n selected: bool\n };\n }\n\n if (item.selected) {\n return {\n ...item,\n selected: false\n };\n }\n\n return item;\n });\n },\n\n selectItem(items: FieldReferenceMenuItem[], id: Field['id']): FieldReferenceMenuItem[] {\n return this.toggleSelected(items, id, true);\n },\n\n deselectItem(items: FieldReferenceMenuItem[], id: Field['id']): FieldReferenceMenuItem[] {\n return this.toggleSelected(items, id, false);\n },\n\n mapTree(\n items: FieldReferenceMenuItem[],\n fn: (\n item: FieldReferenceMenuItem,\n index: number,\n array: FieldReferenceMenuItem[]\n ) => FieldReferenceMenuItem\n ): FieldReferenceMenuItem[] {\n return items.map((item, index, array) => {\n let newItem = item;\n\n if (item.items) {\n newItem = {\n ...newItem,\n items: this.mapTree(item.items, fn) as FieldReferenceMenuItem[]\n };\n }\n\n return fn(newItem, index, array);\n });\n },\n\n filterBySearch(items: FieldReferenceMenuItem[], searchValue: string): FieldReferenceMenuItem[] {\n const exactSearchRegex = createStringMatcher(searchValue, 'exact');\n const startsWithSearchRegex = createStringMatcher(searchValue, 'start');\n const containsSearchRegex = createStringMatcher(searchValue, 'contains');\n\n const exactSearchResults = items.filter(({ id, name }: FieldReferenceMenuItem) => {\n return exactSearchRegex.test(id) || exactSearchRegex.test(name);\n });\n\n const startsWithSearchResults = items.filter(({ id, name }: FieldReferenceMenuItem) => {\n return (\n !exactSearchResults.some(item => item.id === id) &&\n (startsWithSearchRegex.test(id) || startsWithSearchRegex.test(name))\n );\n });\n\n const containsSearchResults = items.filter(({ id, name }: FieldReferenceMenuItem) => {\n return (\n !exactSearchResults.some(item => item.id === id) &&\n !startsWithSearchResults.some(item => item.id === id) &&\n (containsSearchRegex.test(id) || containsSearchRegex.test(name))\n );\n });\n\n return [...exactSearchResults, ...startsWithSearchResults, ...containsSearchResults];\n }\n};\n\nexport const addFieldToPath = (\n path: Field[],\n field: Field,\n parentItem: FieldReferenceMenuProps['parentItem']\n): Field[] => {\n if (!path.length) return [field];\n if (path[path.length - 1].id !== parentItem?.id) {\n return [...path.slice(0, path.length - 1), field];\n }\n return [...path, field];\n};\n\nexport const removeFieldFromPath = (path: Field[], id: Field['id']): Field[] => {\n if (!path.length) return [];\n\n const newPath = [...path];\n let lastItem = newPath.pop();\n while (lastItem) {\n if (lastItem.id === id) {\n break;\n } else {\n lastItem = newPath.pop();\n }\n }\n\n return newPath;\n};\n\nexport default helpers;\n"]}
@@ -1,7 +1,7 @@
1
1
  export { default as FieldReferenceInput } from './FieldReferenceInput';
2
2
  export { default as FieldReferenceDisplay } from './FieldReferenceDisplay';
3
- export type { default as FieldReferenceInputProps, AltContext, Context, Field, FieldReferenceMenuProps, FieldReferenceMenuItem, FieldReferenceHandleValue, FieldReferenceDisplayProps } from './FieldReference.types';
3
+ export type { default as FieldReferenceInputProps, AltContext, Context, Field, FieldReferenceProps, FieldReferenceMenuProps, FieldReferenceMenuItem, FieldReferenceHandleValue, FieldReferenceDisplayProps } from './FieldReference.types';
4
4
  export { typeIconMapping, getIconMapping } from '../../utils/typeIconMapping';
5
5
  export type { FieldType } from '../../utils/typeIconMapping';
6
- export { default as fieldReferenceMenuHelpers } from './helpers';
6
+ export { default as fieldReferenceMenuHelpers, flatten } from './helpers';
7
7
  //# sourceMappingURL=index.d.ts.map