@pega/cosmos-react-demos 3.0.0-dev.16.0 → 3.0.0-dev.18.0

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 (261) hide show
  1. package/jsx/build/FlowModeller/FlowModeller.mocks.d.ts +3 -2
  2. package/jsx/build/FlowModeller/FlowModeller.mocks.d.ts.map +1 -1
  3. package/jsx/build/FlowModeller/FlowModeller.mocks.jsx +62 -8
  4. package/jsx/build/FlowModeller/FlowModeller.mocks.jsx.map +1 -1
  5. package/jsx/build/FlowModeller/FlowModeller.stories.d.ts.map +1 -1
  6. package/jsx/build/FlowModeller/FlowModeller.stories.jsx +93 -16
  7. package/jsx/build/FlowModeller/FlowModeller.stories.jsx.map +1 -1
  8. package/jsx/build/ObjectSelect/ObjectSelect.mocks.d.ts +23 -8
  9. package/jsx/build/ObjectSelect/ObjectSelect.mocks.d.ts.map +1 -1
  10. package/jsx/build/ObjectSelect/ObjectSelect.mocks.jsx +31 -27
  11. package/jsx/build/ObjectSelect/ObjectSelect.mocks.jsx.map +1 -1
  12. package/jsx/build/ObjectSelect/ObjectSelect.stories.d.ts.map +1 -1
  13. package/jsx/build/ObjectSelect/ObjectSelect.stories.jsx +60 -21
  14. package/jsx/build/ObjectSelect/ObjectSelect.stories.jsx.map +1 -1
  15. package/jsx/build/PageTemplates/PageTemplates.mocks.d.ts.map +1 -1
  16. package/jsx/build/PageTemplates/PageTemplates.mocks.jsx +17 -2
  17. package/jsx/build/PageTemplates/PageTemplates.mocks.jsx.map +1 -1
  18. package/jsx/build/Workbench/Workbench.stories.d.ts +1 -0
  19. package/jsx/build/Workbench/Workbench.stories.d.ts.map +1 -1
  20. package/jsx/build/Workbench/Workbench.stories.jsx +200 -3
  21. package/jsx/build/Workbench/Workbench.stories.jsx.map +1 -1
  22. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.mocks.d.ts +1 -1
  23. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.mocks.d.ts.map +1 -1
  24. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.mocks.js +3 -1
  25. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.mocks.js.map +1 -1
  26. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.stories.d.ts +2 -1
  27. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.stories.d.ts.map +1 -1
  28. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.stories.jsx +19 -13
  29. package/jsx/condition-builder/ConditionBuilder/ConditionBuilder.stories.jsx.map +1 -1
  30. package/jsx/condition-builder/ConditionBuilder/props.mock.d.ts.map +1 -1
  31. package/jsx/condition-builder/ConditionBuilder/props.mock.js +67 -15
  32. package/jsx/condition-builder/ConditionBuilder/props.mock.js.map +1 -1
  33. package/jsx/condition-builder/ConditionInput/ConditionInput.stories.jsx +4 -1
  34. package/jsx/condition-builder/ConditionInput/ConditionInput.stories.jsx.map +1 -1
  35. package/jsx/condition-builder/PromotedFilters/PromotedFilters.mocks.d.ts.map +1 -1
  36. package/jsx/condition-builder/PromotedFilters/PromotedFilters.mocks.js +12 -0
  37. package/jsx/condition-builder/PromotedFilters/PromotedFilters.mocks.js.map +1 -1
  38. package/jsx/condition-builder/PromotedFilters/PromotedFilters.stories.d.ts +4 -2
  39. package/jsx/condition-builder/PromotedFilters/PromotedFilters.stories.d.ts.map +1 -1
  40. package/jsx/condition-builder/PromotedFilters/PromotedFilters.stories.jsx +11 -2
  41. package/jsx/condition-builder/PromotedFilters/PromotedFilters.stories.jsx.map +1 -1
  42. package/jsx/condition-builder/PromotedFilters/PromotedFilters.styles.d.ts +7 -0
  43. package/jsx/condition-builder/PromotedFilters/PromotedFilters.styles.d.ts.map +1 -1
  44. package/jsx/condition-builder/PromotedFilters/PromotedFilters.styles.js +29 -2
  45. package/jsx/condition-builder/PromotedFilters/PromotedFilters.styles.js.map +1 -1
  46. package/jsx/core/AppShell/AppShell.mocks.d.ts +1 -1
  47. package/jsx/core/AppShell/AppShell.mocks.jsx +5 -5
  48. package/jsx/core/AppShell/AppShell.mocks.jsx.map +1 -1
  49. package/jsx/core/AppShell/AppShell.stories.d.ts.map +1 -1
  50. package/jsx/core/AppShell/AppShell.stories.jsx +26 -2
  51. package/jsx/core/AppShell/AppShell.stories.jsx.map +1 -1
  52. package/jsx/core/Currency/Currency.stories.d.ts.map +1 -1
  53. package/jsx/core/Currency/Currency.stories.jsx +3 -2
  54. package/jsx/core/Currency/Currency.stories.jsx.map +1 -1
  55. package/jsx/core/DateTime/DateTime.stories.d.ts.map +1 -1
  56. package/jsx/core/DateTime/DateTime.stories.jsx +74 -9
  57. package/jsx/core/DateTime/DateTime.stories.jsx.map +1 -1
  58. package/jsx/core/Form/Form.mocks.d.ts.map +1 -1
  59. package/jsx/core/Form/Form.mocks.jsx +2 -1
  60. package/jsx/core/Form/Form.mocks.jsx.map +1 -1
  61. package/jsx/core/Input/Input.stories.d.ts +1 -0
  62. package/jsx/core/Input/Input.stories.d.ts.map +1 -1
  63. package/jsx/core/Input/Input.stories.jsx +70 -1
  64. package/jsx/core/Input/Input.stories.jsx.map +1 -1
  65. package/jsx/core/ListToolbar/ListToolbar.stories.d.ts +5 -1
  66. package/jsx/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -1
  67. package/jsx/core/ListToolbar/ListToolbar.stories.jsx +9 -3
  68. package/jsx/core/ListToolbar/ListToolbar.stories.jsx.map +1 -1
  69. package/jsx/core/Menu/Menu.stories.d.ts.map +1 -1
  70. package/jsx/core/Menu/Menu.stories.jsx +4 -3
  71. package/jsx/core/Menu/Menu.stories.jsx.map +1 -1
  72. package/jsx/core/Number/Number.stories.jsx +3 -3
  73. package/jsx/core/Number/Number.stories.jsx.map +1 -1
  74. package/jsx/cs/ArticleList/ArticleList.stories.d.ts.map +1 -1
  75. package/jsx/cs/ArticleList/ArticleList.stories.jsx +1 -1
  76. package/jsx/cs/ArticleList/ArticleList.stories.jsx.map +1 -1
  77. package/jsx/dnd/StandardDragDropList/Demo.d.ts +7 -0
  78. package/jsx/dnd/StandardDragDropList/Demo.d.ts.map +1 -0
  79. package/jsx/dnd/StandardDragDropList/Demo.jsx +158 -0
  80. package/jsx/dnd/StandardDragDropList/Demo.jsx.map +1 -0
  81. package/jsx/dnd/StandardDragDropList/GroupConfig.d.ts +10 -0
  82. package/jsx/dnd/StandardDragDropList/GroupConfig.d.ts.map +1 -0
  83. package/jsx/dnd/StandardDragDropList/GroupConfig.jsx +26 -0
  84. package/jsx/dnd/StandardDragDropList/GroupConfig.jsx.map +1 -0
  85. package/jsx/dnd/StandardDragDropList/ItemConfig.d.ts +12 -0
  86. package/jsx/dnd/StandardDragDropList/ItemConfig.d.ts.map +1 -0
  87. package/jsx/dnd/StandardDragDropList/ItemConfig.jsx +21 -0
  88. package/jsx/dnd/StandardDragDropList/ItemConfig.jsx.map +1 -0
  89. package/jsx/dnd/StandardDragDropList/Popover.d.ts +14 -0
  90. package/jsx/dnd/StandardDragDropList/Popover.d.ts.map +1 -0
  91. package/jsx/dnd/StandardDragDropList/Popover.jsx +51 -0
  92. package/jsx/dnd/StandardDragDropList/Popover.jsx.map +1 -0
  93. package/jsx/dnd/StandardDragDropList/SelectionMenu.d.ts +16 -0
  94. package/jsx/dnd/StandardDragDropList/SelectionMenu.d.ts.map +1 -0
  95. package/jsx/dnd/StandardDragDropList/SelectionMenu.jsx +104 -0
  96. package/jsx/dnd/StandardDragDropList/SelectionMenu.jsx.map +1 -0
  97. package/jsx/dnd/StandardDragDropList/StandardDragDropList.stories.d.ts +5 -0
  98. package/jsx/dnd/StandardDragDropList/StandardDragDropList.stories.d.ts.map +1 -0
  99. package/jsx/dnd/StandardDragDropList/StandardDragDropList.stories.jsx +15 -0
  100. package/jsx/dnd/StandardDragDropList/StandardDragDropList.stories.jsx.map +1 -0
  101. package/jsx/dnd/StandardDragDropList/mockData.d.ts +26 -0
  102. package/jsx/dnd/StandardDragDropList/mockData.d.ts.map +1 -0
  103. package/jsx/dnd/StandardDragDropList/mockData.js +77 -0
  104. package/jsx/dnd/StandardDragDropList/mockData.js.map +1 -0
  105. package/jsx/rte/RichTextEditor/RichTextViewer.stories.jsx +1 -1
  106. package/jsx/rte/RichTextEditor/RichTextViewer.stories.jsx.map +1 -1
  107. package/jsx/social/Email/Email.stories.d.ts +3 -1
  108. package/jsx/social/Email/Email.stories.d.ts.map +1 -1
  109. package/jsx/social/Email/Email.stories.jsx +61 -35
  110. package/jsx/social/Email/Email.stories.jsx.map +1 -1
  111. package/jsx/social/Feed/Feed.mocks.d.ts +1 -1
  112. package/jsx/social/Feed/Feed.mocks.d.ts.map +1 -1
  113. package/jsx/social/Feed/Feed.mocks.jsx.map +1 -1
  114. package/jsx/social/Feed/Feed.stories.jsx +1 -1
  115. package/jsx/social/Feed/Feed.stories.jsx.map +1 -1
  116. package/jsx/social/Feed/FeedPost.stories.d.ts.map +1 -1
  117. package/jsx/social/Feed/FeedPost.stories.jsx +7 -7
  118. package/jsx/social/Feed/FeedPost.stories.jsx.map +1 -1
  119. package/jsx/social/Feed/FeedReply.stories.d.ts +1 -1
  120. package/jsx/social/Feed/FeedReply.stories.d.ts.map +1 -1
  121. package/jsx/social/Feed/FeedReply.stories.jsx +6 -6
  122. package/jsx/social/Feed/FeedReply.stories.jsx.map +1 -1
  123. package/jsx/work/CaseView/CaseView.stories.d.ts.map +1 -1
  124. package/jsx/work/CaseView/CaseView.stories.jsx +3 -1
  125. package/jsx/work/CaseView/CaseView.stories.jsx.map +1 -1
  126. package/jsx/work/ConfigurableLayout/ConfigurableLayout.stories.d.ts.map +1 -1
  127. package/jsx/work/ConfigurableLayout/ConfigurableLayout.stories.jsx +1 -0
  128. package/jsx/work/ConfigurableLayout/ConfigurableLayout.stories.jsx.map +1 -1
  129. package/jsx/wss/AppShell/AppShell.stories.jsx +3 -3
  130. package/jsx/wss/AppShell/AppShell.stories.jsx.map +1 -1
  131. package/lib/build/FlowModeller/FlowModeller.mocks.d.ts +3 -2
  132. package/lib/build/FlowModeller/FlowModeller.mocks.d.ts.map +1 -1
  133. package/lib/build/FlowModeller/FlowModeller.mocks.js +62 -8
  134. package/lib/build/FlowModeller/FlowModeller.mocks.js.map +1 -1
  135. package/lib/build/FlowModeller/FlowModeller.stories.d.ts.map +1 -1
  136. package/lib/build/FlowModeller/FlowModeller.stories.js +89 -17
  137. package/lib/build/FlowModeller/FlowModeller.stories.js.map +1 -1
  138. package/lib/build/ObjectSelect/ObjectSelect.mocks.d.ts +23 -8
  139. package/lib/build/ObjectSelect/ObjectSelect.mocks.d.ts.map +1 -1
  140. package/lib/build/ObjectSelect/ObjectSelect.mocks.js +27 -27
  141. package/lib/build/ObjectSelect/ObjectSelect.mocks.js.map +1 -1
  142. package/lib/build/ObjectSelect/ObjectSelect.stories.d.ts.map +1 -1
  143. package/lib/build/ObjectSelect/ObjectSelect.stories.js +62 -21
  144. package/lib/build/ObjectSelect/ObjectSelect.stories.js.map +1 -1
  145. package/lib/build/PageTemplates/PageTemplates.mocks.d.ts.map +1 -1
  146. package/lib/build/PageTemplates/PageTemplates.mocks.js +17 -2
  147. package/lib/build/PageTemplates/PageTemplates.mocks.js.map +1 -1
  148. package/lib/build/Workbench/Workbench.stories.d.ts +1 -0
  149. package/lib/build/Workbench/Workbench.stories.d.ts.map +1 -1
  150. package/lib/build/Workbench/Workbench.stories.js +195 -3
  151. package/lib/build/Workbench/Workbench.stories.js.map +1 -1
  152. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.mocks.d.ts +1 -1
  153. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.mocks.d.ts.map +1 -1
  154. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.mocks.js +3 -1
  155. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.mocks.js.map +1 -1
  156. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.stories.d.ts +2 -1
  157. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.stories.d.ts.map +1 -1
  158. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.stories.js +17 -15
  159. package/lib/condition-builder/ConditionBuilder/ConditionBuilder.stories.js.map +1 -1
  160. package/lib/condition-builder/ConditionBuilder/props.mock.d.ts.map +1 -1
  161. package/lib/condition-builder/ConditionBuilder/props.mock.js +67 -15
  162. package/lib/condition-builder/ConditionBuilder/props.mock.js.map +1 -1
  163. package/lib/condition-builder/ConditionInput/ConditionInput.stories.js +4 -1
  164. package/lib/condition-builder/ConditionInput/ConditionInput.stories.js.map +1 -1
  165. package/lib/condition-builder/PromotedFilters/PromotedFilters.mocks.d.ts.map +1 -1
  166. package/lib/condition-builder/PromotedFilters/PromotedFilters.mocks.js +12 -0
  167. package/lib/condition-builder/PromotedFilters/PromotedFilters.mocks.js.map +1 -1
  168. package/lib/condition-builder/PromotedFilters/PromotedFilters.stories.d.ts +4 -2
  169. package/lib/condition-builder/PromotedFilters/PromotedFilters.stories.d.ts.map +1 -1
  170. package/lib/condition-builder/PromotedFilters/PromotedFilters.stories.js +11 -2
  171. package/lib/condition-builder/PromotedFilters/PromotedFilters.stories.js.map +1 -1
  172. package/lib/condition-builder/PromotedFilters/PromotedFilters.styles.d.ts +7 -0
  173. package/lib/condition-builder/PromotedFilters/PromotedFilters.styles.d.ts.map +1 -1
  174. package/lib/condition-builder/PromotedFilters/PromotedFilters.styles.js +29 -2
  175. package/lib/condition-builder/PromotedFilters/PromotedFilters.styles.js.map +1 -1
  176. package/lib/core/AppShell/AppShell.mocks.d.ts +1 -1
  177. package/lib/core/AppShell/AppShell.mocks.js +5 -5
  178. package/lib/core/AppShell/AppShell.mocks.js.map +1 -1
  179. package/lib/core/AppShell/AppShell.stories.d.ts.map +1 -1
  180. package/lib/core/AppShell/AppShell.stories.js +26 -2
  181. package/lib/core/AppShell/AppShell.stories.js.map +1 -1
  182. package/lib/core/Currency/Currency.stories.d.ts.map +1 -1
  183. package/lib/core/Currency/Currency.stories.js +3 -2
  184. package/lib/core/Currency/Currency.stories.js.map +1 -1
  185. package/lib/core/DateTime/DateTime.stories.d.ts.map +1 -1
  186. package/lib/core/DateTime/DateTime.stories.js +74 -9
  187. package/lib/core/DateTime/DateTime.stories.js.map +1 -1
  188. package/lib/core/Form/Form.mocks.d.ts.map +1 -1
  189. package/lib/core/Form/Form.mocks.js +1 -1
  190. package/lib/core/Form/Form.mocks.js.map +1 -1
  191. package/lib/core/Input/Input.stories.d.ts +1 -0
  192. package/lib/core/Input/Input.stories.d.ts.map +1 -1
  193. package/lib/core/Input/Input.stories.js +70 -1
  194. package/lib/core/Input/Input.stories.js.map +1 -1
  195. package/lib/core/ListToolbar/ListToolbar.stories.d.ts +5 -1
  196. package/lib/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -1
  197. package/lib/core/ListToolbar/ListToolbar.stories.js +9 -3
  198. package/lib/core/ListToolbar/ListToolbar.stories.js.map +1 -1
  199. package/lib/core/Menu/Menu.stories.d.ts.map +1 -1
  200. package/lib/core/Menu/Menu.stories.js +4 -3
  201. package/lib/core/Menu/Menu.stories.js.map +1 -1
  202. package/lib/core/Number/Number.stories.js +3 -3
  203. package/lib/core/Number/Number.stories.js.map +1 -1
  204. package/lib/cs/ArticleList/ArticleList.stories.d.ts.map +1 -1
  205. package/lib/cs/ArticleList/ArticleList.stories.js +1 -1
  206. package/lib/cs/ArticleList/ArticleList.stories.js.map +1 -1
  207. package/lib/dnd/StandardDragDropList/Demo.d.ts +7 -0
  208. package/lib/dnd/StandardDragDropList/Demo.d.ts.map +1 -0
  209. package/lib/dnd/StandardDragDropList/Demo.js +151 -0
  210. package/lib/dnd/StandardDragDropList/Demo.js.map +1 -0
  211. package/lib/dnd/StandardDragDropList/GroupConfig.d.ts +10 -0
  212. package/lib/dnd/StandardDragDropList/GroupConfig.d.ts.map +1 -0
  213. package/lib/dnd/StandardDragDropList/GroupConfig.js +18 -0
  214. package/lib/dnd/StandardDragDropList/GroupConfig.js.map +1 -0
  215. package/lib/dnd/StandardDragDropList/ItemConfig.d.ts +12 -0
  216. package/lib/dnd/StandardDragDropList/ItemConfig.d.ts.map +1 -0
  217. package/lib/dnd/StandardDragDropList/ItemConfig.js +20 -0
  218. package/lib/dnd/StandardDragDropList/ItemConfig.js.map +1 -0
  219. package/lib/dnd/StandardDragDropList/Popover.d.ts +14 -0
  220. package/lib/dnd/StandardDragDropList/Popover.d.ts.map +1 -0
  221. package/lib/dnd/StandardDragDropList/Popover.js +33 -0
  222. package/lib/dnd/StandardDragDropList/Popover.js.map +1 -0
  223. package/lib/dnd/StandardDragDropList/SelectionMenu.d.ts +16 -0
  224. package/lib/dnd/StandardDragDropList/SelectionMenu.d.ts.map +1 -0
  225. package/lib/dnd/StandardDragDropList/SelectionMenu.js +100 -0
  226. package/lib/dnd/StandardDragDropList/SelectionMenu.js.map +1 -0
  227. package/lib/dnd/StandardDragDropList/StandardDragDropList.stories.d.ts +5 -0
  228. package/lib/dnd/StandardDragDropList/StandardDragDropList.stories.d.ts.map +1 -0
  229. package/lib/dnd/StandardDragDropList/StandardDragDropList.stories.js +13 -0
  230. package/lib/dnd/StandardDragDropList/StandardDragDropList.stories.js.map +1 -0
  231. package/lib/dnd/StandardDragDropList/mockData.d.ts +26 -0
  232. package/lib/dnd/StandardDragDropList/mockData.d.ts.map +1 -0
  233. package/lib/dnd/StandardDragDropList/mockData.js +78 -0
  234. package/lib/dnd/StandardDragDropList/mockData.js.map +1 -0
  235. package/lib/rte/RichTextEditor/RichTextViewer.stories.js +1 -1
  236. package/lib/rte/RichTextEditor/RichTextViewer.stories.js.map +1 -1
  237. package/lib/social/Email/Email.stories.d.ts +3 -1
  238. package/lib/social/Email/Email.stories.d.ts.map +1 -1
  239. package/lib/social/Email/Email.stories.js +73 -47
  240. package/lib/social/Email/Email.stories.js.map +1 -1
  241. package/lib/social/Feed/Feed.mocks.d.ts +1 -1
  242. package/lib/social/Feed/Feed.mocks.d.ts.map +1 -1
  243. package/lib/social/Feed/Feed.mocks.js.map +1 -1
  244. package/lib/social/Feed/Feed.stories.js +1 -1
  245. package/lib/social/Feed/Feed.stories.js.map +1 -1
  246. package/lib/social/Feed/FeedPost.stories.d.ts.map +1 -1
  247. package/lib/social/Feed/FeedPost.stories.js +7 -7
  248. package/lib/social/Feed/FeedPost.stories.js.map +1 -1
  249. package/lib/social/Feed/FeedReply.stories.d.ts +1 -1
  250. package/lib/social/Feed/FeedReply.stories.d.ts.map +1 -1
  251. package/lib/social/Feed/FeedReply.stories.js +6 -6
  252. package/lib/social/Feed/FeedReply.stories.js.map +1 -1
  253. package/lib/work/CaseView/CaseView.stories.d.ts.map +1 -1
  254. package/lib/work/CaseView/CaseView.stories.js +3 -1
  255. package/lib/work/CaseView/CaseView.stories.js.map +1 -1
  256. package/lib/work/ConfigurableLayout/ConfigurableLayout.stories.d.ts.map +1 -1
  257. package/lib/work/ConfigurableLayout/ConfigurableLayout.stories.js +1 -0
  258. package/lib/work/ConfigurableLayout/ConfigurableLayout.stories.js.map +1 -1
  259. package/lib/wss/AppShell/AppShell.stories.js +3 -3
  260. package/lib/wss/AppShell/AppShell.stories.js.map +1 -1
  261. package/package.json +9 -9
@@ -1,13 +1,16 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
2
+ import { useEffect, useState } from 'react';
3
3
  import { treeHelpers, StandardTree, Flex, SearchInput, TextArea, Input, Configuration, BuildTheme } from '@pega/cosmos-react-core';
4
- import { FlowModeller, Workbench } from '@pega/cosmos-react-build';
4
+ import { FlowModeller, LifeCycle, Workbench } from '@pega/cosmos-react-build';
5
5
  import { DirectedGraph } from '@pega/cosmos-react-build/lib/components/FlowModeller/Renderer/Utils/Graph';
6
6
  import FlowModellerHelper from '@pega/cosmos-react-build/lib/components/FlowModeller/helper';
7
- import { nodeLibrary, nodeActions, exampleCRMNodesData as nodesData, exampleCRMConnectorsData as connectorsData } from '../FlowModeller/FlowModeller.mocks';
7
+ import { nodeLibrary, nodeActions, exampleCRMNodesData as nodesData, exampleCRMConnectorsData as connectorsData, FlowShapeType } from '../FlowModeller/FlowModeller.mocks';
8
+ import { LifeCycleWorkFlowData, workFlowNodeLibrary } from '../LifeCycle/LifeCycle.mocks';
9
+ import { addStageCallback, addStepCallback, addTaskCallback, deleteStageCallback, deleteStepCallback, deleteTaskCallback } from '../LifeCycle/utils';
8
10
  import { sideList } from './Workbench.mocks';
9
11
  export default {
10
12
  title: 'Build/Workbench',
13
+ component: Workbench,
11
14
  parameters: {
12
15
  layout: 'fullscreen'
13
16
  },
@@ -50,9 +53,11 @@ export const WorkbenchDemo = (args) => {
50
53
  setOpen(true);
51
54
  };
52
55
  const addNode = (nodeType, metaData) => {
56
+ const isBranchNode = nodeType.id === FlowShapeType.GOTO.id;
53
57
  const UpdatedData = FlowModellerHelper.addNode({
54
58
  nodeType,
55
59
  graphData,
60
+ isBranchNode,
56
61
  metaData
57
62
  });
58
63
  if (UpdatedData) {
@@ -90,6 +95,193 @@ export const WorkbenchDemo = (args) => {
90
95
  }
91
96
  }, children: _jsx(FlowChartView, {}) }) }));
92
97
  };
98
+ export const WorkbenchWithLifecycleDemo = () => {
99
+ const [open, setOpen] = useState(false);
100
+ const [heading, setHeading] = useState('');
101
+ const ConfigContent = () => {
102
+ return (_jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(Input, { defaultValue: heading }), _jsx(TextArea, { name: 'Description', required: true, label: 'Description', displayCharCount: true, maxLength: 300, value: '' })] }));
103
+ };
104
+ const WorkFlowView = () => {
105
+ const workFlowState = {
106
+ activeElementId: '',
107
+ data: LifeCycleWorkFlowData
108
+ };
109
+ const [workFlowData, setWorkFlowData] = useState(workFlowState);
110
+ const addProcessStep = (stepData, libItem) => {
111
+ const newStep = {
112
+ id: libItem.id,
113
+ label: libItem.primary,
114
+ visual: {
115
+ color: libItem.type.color,
116
+ icon: libItem.type.icon
117
+ },
118
+ error: '',
119
+ status: { label: '' }
120
+ };
121
+ const updatedTask = {
122
+ ...stepData.task,
123
+ steps: [...stepData.task.steps, newStep]
124
+ };
125
+ const updatedData = { ...stepData, task: updatedTask };
126
+ const changedData = addStepCallback(updatedData, workFlowData);
127
+ setWorkFlowData(changedData);
128
+ };
129
+ const deleteProcessStep = (stepData) => {
130
+ const changedData = deleteStepCallback(stepData, workFlowData);
131
+ setWorkFlowData(changedData);
132
+ };
133
+ const addProcess = (taskData) => {
134
+ const changedData = addTaskCallback(taskData, workFlowData);
135
+ setWorkFlowData(changedData);
136
+ };
137
+ const addParallelProcess = (taskData) => {
138
+ const changedData = addTaskCallback(taskData, workFlowData, true);
139
+ setWorkFlowData(changedData);
140
+ };
141
+ const deleteProcess = (taskData) => {
142
+ const changedData = deleteTaskCallback(taskData, workFlowData);
143
+ setWorkFlowData(changedData);
144
+ };
145
+ const configureProcess = () => {
146
+ setHeading('Configure Process');
147
+ setOpen(true);
148
+ };
149
+ const onAddStage = () => {
150
+ const changedData = addStageCallback(workFlowData, 'stages');
151
+ setWorkFlowData(changedData);
152
+ };
153
+ const onAddAlternateStage = () => {
154
+ const changedData = addStageCallback(workFlowData, 'alternateStages');
155
+ setWorkFlowData(changedData);
156
+ };
157
+ const onDeleteStage = param => {
158
+ const changedData = deleteStageCallback(param, workFlowData);
159
+ if (changedData === 'firstStage') {
160
+ // eslint-disable-next-line no-alert
161
+ alert("you can't delete the create stage");
162
+ }
163
+ else {
164
+ setWorkFlowData(changedData);
165
+ }
166
+ };
167
+ const stepInputFocus = () => { };
168
+ const stepInputBlur = () => { };
169
+ const stepInputChange = () => { };
170
+ const taskInputFocus = () => { };
171
+ const taskInputBlur = () => { };
172
+ const taskInputChange = () => { };
173
+ const onStageInputFocus = () => { };
174
+ const onStageInputBlur = () => { };
175
+ const onStageInputChange = () => { };
176
+ const onAlternateStageInputChange = () => { };
177
+ useEffect(() => {
178
+ if (workFlowData.activeElementId) {
179
+ const elementId = document.getElementById(`${workFlowData.activeElementId}`);
180
+ if (elementId) {
181
+ elementId.focus();
182
+ }
183
+ }
184
+ });
185
+ const stages = workFlowData.data.stages;
186
+ const alternateStages = workFlowData.data.alternateStages;
187
+ const categories = LifeCycleWorkFlowData.categories;
188
+ return (_jsx(LifeCycle, { items: stages, alternateItems: alternateStages, categories: categories, task: [
189
+ {
190
+ actions: [
191
+ {
192
+ text: 'Delete Process',
193
+ id: 'delete9',
194
+ icon: 'trash',
195
+ onClick: deleteProcess
196
+ },
197
+ {
198
+ text: 'Configure Process',
199
+ id: 'share2',
200
+ icon: 'share',
201
+ onClick: configureProcess
202
+ }
203
+ ],
204
+ addStepTitle: 'step',
205
+ addTask: {
206
+ title: 'Process',
207
+ showOnce: true,
208
+ onAddTask: addProcess
209
+ },
210
+ onFocus: taskInputFocus,
211
+ onBlur: taskInputBlur,
212
+ onChange: taskInputChange,
213
+ onAddStep: addProcessStep,
214
+ nodeLibrary: workFlowNodeLibrary
215
+ }
216
+ ], step: [
217
+ {
218
+ actions: [
219
+ {
220
+ text: 'Delete step',
221
+ id: 'delete10',
222
+ icon: 'trash',
223
+ onClick: deleteProcessStep
224
+ }
225
+ ],
226
+ onFocus: stepInputFocus,
227
+ onBlur: stepInputBlur,
228
+ onChange: stepInputChange
229
+ // disabled: true
230
+ }
231
+ ], stage: {
232
+ actions: {
233
+ start: [
234
+ { text: 'Add Process', id: 'add1', onClick: addProcess },
235
+ { text: 'Add Parallel Process', id: 'add3', onClick: addParallelProcess },
236
+ { text: 'Add Alternate Stage', id: 'add2', onClick: onAddAlternateStage }
237
+ ],
238
+ default: [
239
+ { text: 'Add Process', id: 'add1', onClick: addProcess },
240
+ { text: 'Add Parallel Process', id: 'add3', onClick: addParallelProcess },
241
+ { text: 'Add Alternate Stage', id: 'add2', onClick: onAddAlternateStage },
242
+ { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }
243
+ ],
244
+ 'default-wait': [
245
+ { text: 'Add Process', id: 'add1', onClick: addProcess },
246
+ { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }
247
+ ],
248
+ resolution: [],
249
+ alternate: [
250
+ { text: 'Add Process', id: 'add1', onClick: addProcess },
251
+ { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }
252
+ ],
253
+ 'alternate-wait': [
254
+ { text: 'Add Process', id: 'add1', onClick: addProcess },
255
+ { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }
256
+ ]
257
+ },
258
+ onFocus: onStageInputFocus,
259
+ onBlur: onStageInputBlur,
260
+ onChange: onStageInputChange
261
+ }, alternateStage: {
262
+ actions: [
263
+ { text: 'Add Process', id: 'add1', onClick: addProcess },
264
+ { text: 'Add Parallel Process', id: 'add3', onClick: addParallelProcess },
265
+ { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }
266
+ ],
267
+ onChange: onAlternateStageInputChange
268
+ }, onAddStage: onAddStage, onAddAlternateStage: onAddAlternateStage }));
269
+ };
270
+ const toolbarActions = {
271
+ undo: { id: 'undo', disabled: false, onClick: () => { } },
272
+ redo: { id: 'redo', disabled: true, onClick: () => { } }
273
+ };
274
+ return (_jsx(Configuration, { theme: BuildTheme, children: _jsx(Workbench, { initiallyVisiblePanelId: undefined, toolbar: {
275
+ toolbarActions
276
+ }, configurationPanel: {
277
+ open,
278
+ content: _jsx(ConfigContent, {}),
279
+ header: heading,
280
+ onDismiss: () => {
281
+ setOpen(false);
282
+ }
283
+ }, children: _jsx(WorkFlowView, {}) }) }));
284
+ };
93
285
  WorkbenchDemo.args = {
94
286
  showActions: true,
95
287
  hideSidePanel: false
@@ -1 +1 @@
1
- {"version":3,"file":"Workbench.stories.js","sourceRoot":"","sources":["../../../src/build/Workbench/Workbench.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { useState } from 'react';\n\nimport {\n StandardTreeProps,\n treeHelpers,\n StandardTree,\n Flex,\n SearchInput,\n TextArea,\n Input,\n Configuration,\n BuildTheme\n} from '@pega/cosmos-react-core';\nimport { FlowModeller, Workbench } from '@pega/cosmos-react-build';\nimport { IconNames } from '@pega/cosmos-react-core/lib/components/Icon/iconNames';\nimport {\n NodeProps,\n NodeType\n} from '@pega/cosmos-react-build/lib/components/FlowModeller/Node/Node.types';\nimport {\n DirectedGraph,\n GraphData,\n ConnectorProps\n} from '@pega/cosmos-react-build/lib/components/FlowModeller/Renderer/Utils/Graph';\nimport FlowModellerHelper from '@pega/cosmos-react-build/lib/components/FlowModeller/helper';\nimport { AddNodeHandlerParams } from '@pega/cosmos-react-build/lib/components/FlowModeller/Renderer/Renderer.types';\n\nimport {\n nodeLibrary,\n nodeActions,\n exampleCRMNodesData as nodesData,\n exampleCRMConnectorsData as connectorsData\n} from '../FlowModeller/FlowModeller.mocks';\n\nimport { sideList } from './Workbench.mocks';\n\nexport default {\n title: 'Build/Workbench',\n parameters: {\n layout: 'fullscreen'\n },\n decorators: [\n StoryComp => (\n <div style={{ height: '100vh' }}>\n <StoryComp />\n </div>\n )\n ]\n} as Meta;\n\nexport interface WorkbenchStoryProps {\n showActions?: boolean;\n hideSidePanel?: boolean;\n zoom?: boolean;\n}\n\nexport const WorkbenchDemo: Story<WorkbenchStoryProps> = (args: WorkbenchStoryProps) => {\n const [open, setOpen] = useState(false);\n const [heading, setHeading] = useState('');\n const [description, setDescription] = useState('');\n const Content = () => {\n const [currentNodeId, setCurrentNodeId] = useState<string | undefined>();\n const [allNodes, setAllNodes] = useState<StandardTreeProps['nodes']>(sideList);\n\n return (\n <>\n <SearchInput />\n <StandardTree\n currentNodeId={currentNodeId}\n nodes={allNodes}\n onNodeClick={id => {\n const clickedNode = treeHelpers.getNode(allNodes, id);\n setCurrentNodeId(id);\n // If a leaf node, just set to current\n if (!clickedNode?.nodes) return;\n\n setAllNodes(tree =>\n treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n expanded: !node.expanded\n };\n })\n );\n }}\n />\n </>\n );\n };\n\n const ConfigContent = () => {\n return (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <Input defaultValue={heading} />\n <TextArea\n name='Description'\n required\n label='Description'\n displayCharCount\n maxLength={300}\n value={description}\n />\n </Flex>\n );\n };\n\n const FlowChartView = () => {\n const [graphData, setGraphData] = useState<GraphData<NodeProps, ConnectorProps>>({\n nodes: nodesData,\n connectors: connectorsData\n });\n\n const launchPropertyModal = (node: NodeProps) => {\n setHeading(node.label);\n setDescription(node.description || '');\n setOpen(true);\n };\n\n const addNode = (nodeType: NodeType, metaData: AddNodeHandlerParams) => {\n const UpdatedData = FlowModellerHelper.addNode({\n nodeType,\n graphData,\n metaData\n });\n if (UpdatedData) {\n const newGraphData: GraphData<NodeProps, ConnectorProps> = UpdatedData.graphData;\n setGraphData(newGraphData);\n }\n };\n\n const selectNode = (nodeId: NodeProps['id']) => {\n const graph = new DirectedGraph(graphData);\n const node = graph.getNode(nodeId);\n launchPropertyModal(node);\n };\n\n return (\n <FlowModeller\n graphData={graphData}\n nodeLibrary={nodeLibrary}\n onNodeAdd={addNode}\n onNodeClick={selectNode}\n actions={nodeActions}\n />\n );\n };\n\n const ExplorerContent = () => {\n return <SearchInput />;\n };\n\n const utilityPanels = [\n { title: 'Steps', id: '1', icon: 'plus' as IconNames, content: <Content /> },\n { title: 'Explorer', id: '2', icon: 'app' as IconNames, content: <ExplorerContent /> },\n { title: 'Views', id: '3', icon: 'headline' as IconNames, content: <Content /> }\n ];\n\n const toolbarActions = {\n undo: { id: 'undo', disabled: false, onClick: () => {} },\n redo: { id: 'redo', disabled: true, onClick: () => {} }\n };\n\n return (\n <Configuration theme={BuildTheme}>\n <Workbench\n utilityPanels={utilityPanels}\n initiallyVisiblePanelId={utilityPanels[0].id}\n toolbar={{\n toolbarActions: args.showActions ? toolbarActions : undefined\n }}\n configurationPanel={{\n open,\n content: <ConfigContent />,\n header: heading,\n onDismiss: () => {\n setOpen(false);\n }\n }}\n >\n <FlowChartView />\n </Workbench>\n </Configuration>\n );\n};\n\nWorkbenchDemo.args = {\n showActions: true,\n hideSidePanel: false\n};\n\nWorkbenchDemo.argTypes = {\n showActions: { control: { type: 'boolean' } },\n hideSidePanel: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"Workbench.stories.js","sourceRoot":"","sources":["../../../src/build/Workbench/Workbench.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { useEffect, useState } from 'react';\n\nimport {\n StandardTreeProps,\n treeHelpers,\n StandardTree,\n Flex,\n SearchInput,\n TextArea,\n Input,\n Configuration,\n BuildTheme\n} from '@pega/cosmos-react-core';\nimport {\n CategoriesItemProps,\n FlowModeller,\n LibraryItem,\n LifeCycle,\n LifeCycleAction,\n LifeCycleActionParam,\n StageItemProps,\n StepItemProps,\n Workbench\n} from '@pega/cosmos-react-build';\nimport { IconNames } from '@pega/cosmos-react-core/lib/components/Icon/iconNames';\nimport {\n NodeProps,\n NodeType\n} from '@pega/cosmos-react-build/lib/components/FlowModeller/Node/Node.types';\nimport {\n DirectedGraph,\n GraphData,\n ConnectorProps\n} from '@pega/cosmos-react-build/lib/components/FlowModeller/Renderer/Utils/Graph';\nimport FlowModellerHelper from '@pega/cosmos-react-build/lib/components/FlowModeller/helper';\nimport { AddNodeHandlerParams } from '@pega/cosmos-react-build/lib/components/FlowModeller/Renderer/Renderer.types';\n\nimport {\n nodeLibrary,\n nodeActions,\n exampleCRMNodesData as nodesData,\n exampleCRMConnectorsData as connectorsData,\n FlowShapeType\n} from '../FlowModeller/FlowModeller.mocks';\nimport { LifeCycleWorkFlowData, workFlowNodeLibrary } from '../LifeCycle/LifeCycle.mocks';\nimport {\n addStageCallback,\n addStepCallback,\n addTaskCallback,\n deleteStageCallback,\n deleteStepCallback,\n deleteTaskCallback,\n LifeCycleMockState\n} from '../LifeCycle/utils';\n\nimport { sideList } from './Workbench.mocks';\n\nexport default {\n title: 'Build/Workbench',\n component: Workbench,\n parameters: {\n layout: 'fullscreen'\n },\n decorators: [\n StoryComp => (\n <div style={{ height: '100vh' }}>\n <StoryComp />\n </div>\n )\n ]\n} as Meta;\n\nexport interface WorkbenchStoryProps {\n showActions?: boolean;\n hideSidePanel?: boolean;\n zoom?: boolean;\n}\n\nexport const WorkbenchDemo: Story<WorkbenchStoryProps> = (args: WorkbenchStoryProps) => {\n const [open, setOpen] = useState(false);\n const [heading, setHeading] = useState('');\n const [description, setDescription] = useState('');\n const Content = () => {\n const [currentNodeId, setCurrentNodeId] = useState<string | undefined>();\n const [allNodes, setAllNodes] = useState<StandardTreeProps['nodes']>(sideList);\n\n return (\n <>\n <SearchInput />\n <StandardTree\n currentNodeId={currentNodeId}\n nodes={allNodes}\n onNodeClick={id => {\n const clickedNode = treeHelpers.getNode(allNodes, id);\n setCurrentNodeId(id);\n // If a leaf node, just set to current\n if (!clickedNode?.nodes) return;\n\n setAllNodes(tree =>\n treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n expanded: !node.expanded\n };\n })\n );\n }}\n />\n </>\n );\n };\n\n const ConfigContent = () => {\n return (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <Input defaultValue={heading} />\n <TextArea\n name='Description'\n required\n label='Description'\n displayCharCount\n maxLength={300}\n value={description}\n />\n </Flex>\n );\n };\n\n const FlowChartView = () => {\n const [graphData, setGraphData] = useState<GraphData<NodeProps, ConnectorProps>>({\n nodes: nodesData,\n connectors: connectorsData\n });\n\n const launchPropertyModal = (node: NodeProps) => {\n setHeading(node.label);\n setDescription(node.description || '');\n setOpen(true);\n };\n\n const addNode = (nodeType: NodeType, metaData: AddNodeHandlerParams) => {\n const isBranchNode = nodeType.id === FlowShapeType.GOTO.id;\n const UpdatedData = FlowModellerHelper.addNode({\n nodeType,\n graphData,\n isBranchNode,\n metaData\n });\n if (UpdatedData) {\n const newGraphData: GraphData<NodeProps, ConnectorProps> = UpdatedData.graphData;\n setGraphData(newGraphData);\n }\n };\n\n const selectNode = (nodeId: NodeProps['id']) => {\n const graph = new DirectedGraph(graphData);\n const node = graph.getNode(nodeId);\n launchPropertyModal(node);\n };\n\n return (\n <FlowModeller\n graphData={graphData}\n nodeLibrary={nodeLibrary}\n onNodeAdd={addNode}\n onNodeClick={selectNode}\n actions={nodeActions}\n />\n );\n };\n\n const ExplorerContent = () => {\n return <SearchInput />;\n };\n\n const utilityPanels = [\n { title: 'Steps', id: '1', icon: 'plus' as IconNames, content: <Content /> },\n { title: 'Explorer', id: '2', icon: 'app' as IconNames, content: <ExplorerContent /> },\n { title: 'Views', id: '3', icon: 'headline' as IconNames, content: <Content /> }\n ];\n\n const toolbarActions = {\n undo: { id: 'undo', disabled: false, onClick: () => {} },\n redo: { id: 'redo', disabled: true, onClick: () => {} }\n };\n\n return (\n <Configuration theme={BuildTheme}>\n <Workbench\n utilityPanels={utilityPanels}\n initiallyVisiblePanelId={utilityPanels[0].id}\n toolbar={{\n toolbarActions: args.showActions ? toolbarActions : undefined\n }}\n configurationPanel={{\n open,\n content: <ConfigContent />,\n header: heading,\n onDismiss: () => {\n setOpen(false);\n }\n }}\n >\n <FlowChartView />\n </Workbench>\n </Configuration>\n );\n};\n\nexport const WorkbenchWithLifecycleDemo: Story<WorkbenchStoryProps> = () => {\n const [open, setOpen] = useState(false);\n const [heading, setHeading] = useState('');\n\n const ConfigContent = () => {\n return (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <Input defaultValue={heading} />\n <TextArea\n name='Description'\n required\n label='Description'\n displayCharCount\n maxLength={300}\n value=''\n />\n </Flex>\n );\n };\n\n const WorkFlowView = () => {\n const workFlowState = {\n activeElementId: '',\n data: LifeCycleWorkFlowData\n } as LifeCycleMockState;\n\n const [workFlowData, setWorkFlowData] = useState(workFlowState);\n\n const addProcessStep = (stepData: LifeCycleActionParam, libItem: LibraryItem) => {\n const newStep: StepItemProps = {\n id: libItem.id,\n label: libItem.primary,\n visual: {\n color: libItem.type.color as StepItemProps['visual']['color'],\n icon: libItem.type.icon\n } as StepItemProps['visual'],\n error: '',\n status: { label: '' }\n };\n const updatedTask = {\n ...stepData.task,\n steps: [...stepData.task!.steps, newStep]\n } as LifeCycleActionParam['task'];\n\n const updatedData: LifeCycleActionParam = { ...stepData, task: updatedTask };\n\n const changedData = addStepCallback(updatedData, workFlowData);\n setWorkFlowData(changedData);\n };\n\n const deleteProcessStep = (stepData: LifeCycleActionParam) => {\n const changedData = deleteStepCallback(stepData, workFlowData);\n setWorkFlowData(changedData);\n };\n\n const addProcess = (taskData: LifeCycleActionParam) => {\n const changedData = addTaskCallback(taskData, workFlowData);\n setWorkFlowData(changedData);\n };\n\n const addParallelProcess = (taskData: LifeCycleActionParam) => {\n const changedData = addTaskCallback(taskData, workFlowData, true);\n setWorkFlowData(changedData);\n };\n\n const deleteProcess = (taskData: LifeCycleActionParam) => {\n const changedData = deleteTaskCallback(taskData, workFlowData);\n setWorkFlowData(changedData);\n };\n\n const configureProcess = () => {\n setHeading('Configure Process');\n setOpen(true);\n };\n\n const onAddStage = () => {\n const changedData = addStageCallback(workFlowData, 'stages');\n setWorkFlowData(changedData);\n };\n\n const onAddAlternateStage = () => {\n const changedData = addStageCallback(workFlowData, 'alternateStages');\n setWorkFlowData(changedData);\n };\n\n const onDeleteStage: LifeCycleAction['onClick'] = param => {\n const changedData = deleteStageCallback(param, workFlowData);\n if (changedData === 'firstStage') {\n // eslint-disable-next-line no-alert\n alert(\"you can't delete the create stage\");\n } else {\n setWorkFlowData(changedData);\n }\n };\n\n const stepInputFocus = () => {};\n\n const stepInputBlur = () => {};\n\n const stepInputChange = () => {};\n\n const taskInputFocus = () => {};\n\n const taskInputBlur = () => {};\n\n const taskInputChange = () => {};\n\n const onStageInputFocus = () => {};\n\n const onStageInputBlur = () => {};\n\n const onStageInputChange = () => {};\n\n const onAlternateStageInputChange = () => {};\n useEffect(() => {\n if (workFlowData.activeElementId) {\n const elementId: HTMLElement | null = document.getElementById(\n `${workFlowData.activeElementId}`\n );\n if (elementId) {\n elementId.focus();\n }\n }\n });\n\n const stages = workFlowData.data.stages as StageItemProps[];\n const alternateStages = workFlowData.data.alternateStages as StageItemProps[];\n const categories: CategoriesItemProps[] = LifeCycleWorkFlowData.categories;\n\n return (\n <LifeCycle\n items={stages}\n alternateItems={alternateStages}\n categories={categories}\n task={[\n {\n actions: [\n {\n text: 'Delete Process',\n id: 'delete9',\n icon: 'trash',\n onClick: deleteProcess\n },\n {\n text: 'Configure Process',\n id: 'share2',\n icon: 'share',\n onClick: configureProcess\n }\n ],\n addStepTitle: 'step',\n addTask: {\n title: 'Process',\n showOnce: true,\n onAddTask: addProcess\n },\n onFocus: taskInputFocus,\n onBlur: taskInputBlur,\n onChange: taskInputChange,\n onAddStep: addProcessStep,\n nodeLibrary: workFlowNodeLibrary\n }\n ]}\n step={[\n {\n actions: [\n {\n text: 'Delete step',\n id: 'delete10',\n icon: 'trash',\n onClick: deleteProcessStep\n }\n ],\n onFocus: stepInputFocus,\n onBlur: stepInputBlur,\n onChange: stepInputChange\n // disabled: true\n }\n ]}\n stage={{\n actions: {\n start: [\n { text: 'Add Process', id: 'add1', onClick: addProcess },\n { text: 'Add Parallel Process', id: 'add3', onClick: addParallelProcess },\n { text: 'Add Alternate Stage', id: 'add2', onClick: onAddAlternateStage }\n ],\n default: [\n { text: 'Add Process', id: 'add1', onClick: addProcess },\n { text: 'Add Parallel Process', id: 'add3', onClick: addParallelProcess },\n { text: 'Add Alternate Stage', id: 'add2', onClick: onAddAlternateStage },\n { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }\n ],\n 'default-wait': [\n { text: 'Add Process', id: 'add1', onClick: addProcess },\n { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }\n ],\n resolution: [],\n alternate: [\n { text: 'Add Process', id: 'add1', onClick: addProcess },\n { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }\n ],\n 'alternate-wait': [\n { text: 'Add Process', id: 'add1', onClick: addProcess },\n { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }\n ]\n },\n onFocus: onStageInputFocus,\n onBlur: onStageInputBlur,\n onChange: onStageInputChange\n }}\n alternateStage={{\n actions: [\n { text: 'Add Process', id: 'add1', onClick: addProcess },\n { text: 'Add Parallel Process', id: 'add3', onClick: addParallelProcess },\n { text: 'Delete Stage', id: 'delete11', onClick: onDeleteStage }\n ],\n onChange: onAlternateStageInputChange\n }}\n onAddStage={onAddStage}\n onAddAlternateStage={onAddAlternateStage}\n />\n );\n };\n\n const toolbarActions = {\n undo: { id: 'undo', disabled: false, onClick: () => {} },\n redo: { id: 'redo', disabled: true, onClick: () => {} }\n };\n\n return (\n <Configuration theme={BuildTheme}>\n <Workbench\n initiallyVisiblePanelId={undefined}\n toolbar={{\n toolbarActions\n }}\n configurationPanel={{\n open,\n content: <ConfigContent />,\n header: heading,\n onDismiss: () => {\n setOpen(false);\n }\n }}\n >\n <WorkFlowView />\n </Workbench>\n </Configuration>\n );\n};\n\nWorkbenchDemo.args = {\n showActions: true,\n hideSidePanel: false\n};\n\nWorkbenchDemo.argTypes = {\n showActions: { control: { type: 'boolean' } },\n hideSidePanel: { control: { type: 'boolean' } }\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  import { DateFunctionsByType, RHSType } from '@pega/cosmos-react-condition-builder';
2
- export declare const convertRhsTypes: (useLiteralRHSType: boolean, useFieldRHSType: boolean, useRelativeDatesType: boolean, dateFunctions?: DateFunctionsByType | undefined) => Set<RHSType>;
2
+ export declare const convertRhsTypes: (useLiteralRHSType: boolean, useFieldRHSType: boolean, useRelativeDatesType: boolean, useParameterRHSType: boolean, dateFunctions?: DateFunctionsByType | undefined) => Set<RHSType>;
3
3
  //# sourceMappingURL=ConditionBuilder.mocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionBuilder.mocks.d.ts","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpF,eAAO,MAAM,eAAe,sBACP,OAAO,mBACT,OAAO,wBACF,OAAO,kEAS9B,CAAC"}
1
+ {"version":3,"file":"ConditionBuilder.mocks.d.ts","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpF,eAAO,MAAM,eAAe,sBACP,OAAO,mBACT,OAAO,wBACF,OAAO,uBACR,OAAO,kEAU7B,CAAC"}
@@ -1,4 +1,4 @@
1
- export const convertRhsTypes = (useLiteralRHSType, useFieldRHSType, useRelativeDatesType, dateFunctions) => {
1
+ export const convertRhsTypes = (useLiteralRHSType, useFieldRHSType, useRelativeDatesType, useParameterRHSType, dateFunctions) => {
2
2
  const setRhsTypes = new Set();
3
3
  if (useLiteralRHSType)
4
4
  setRhsTypes.add('LITERAL');
@@ -8,6 +8,8 @@ export const convertRhsTypes = (useLiteralRHSType, useFieldRHSType, useRelativeD
8
8
  setRhsTypes.add('DATE_FUNCTION');
9
9
  if (useRelativeDatesType)
10
10
  setRhsTypes.add('RELATIVE_DATE');
11
+ if (useParameterRHSType)
12
+ setRhsTypes.add('PARAMETER');
11
13
  return setRhsTypes;
12
14
  };
13
15
  //# sourceMappingURL=ConditionBuilder.mocks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionBuilder.mocks.js","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.mocks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,iBAA0B,EAC1B,eAAwB,EACxB,oBAA6B,EAC7B,aAAmC,EACnC,EAAE;IACF,MAAM,WAAW,GAAiB,IAAI,GAAG,EAAW,CAAC;IACrD,IAAI,iBAAiB;QAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,eAAe;QAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,aAAa;QAAE,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,oBAAoB;QAAE,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3D,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC","sourcesContent":["import { DateFunctionsByType, RHSType } from '@pega/cosmos-react-condition-builder';\n\nexport const convertRhsTypes = (\n useLiteralRHSType: boolean,\n useFieldRHSType: boolean,\n useRelativeDatesType: boolean,\n dateFunctions?: DateFunctionsByType\n) => {\n const setRhsTypes: Set<RHSType> = new Set<RHSType>();\n if (useLiteralRHSType) setRhsTypes.add('LITERAL');\n if (useFieldRHSType) setRhsTypes.add('FIELD');\n if (dateFunctions) setRhsTypes.add('DATE_FUNCTION');\n if (useRelativeDatesType) setRhsTypes.add('RELATIVE_DATE');\n return setRhsTypes;\n};\n"]}
1
+ {"version":3,"file":"ConditionBuilder.mocks.js","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.mocks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,iBAA0B,EAC1B,eAAwB,EACxB,oBAA6B,EAC7B,mBAA4B,EAC5B,aAAmC,EACnC,EAAE;IACF,MAAM,WAAW,GAAiB,IAAI,GAAG,EAAW,CAAC;IACrD,IAAI,iBAAiB;QAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,eAAe;QAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,aAAa;QAAE,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,oBAAoB;QAAE,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3D,IAAI,mBAAmB;QAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC","sourcesContent":["import { DateFunctionsByType, RHSType } from '@pega/cosmos-react-condition-builder';\n\nexport const convertRhsTypes = (\n useLiteralRHSType: boolean,\n useFieldRHSType: boolean,\n useRelativeDatesType: boolean,\n useParameterRHSType: boolean,\n dateFunctions?: DateFunctionsByType\n) => {\n const setRhsTypes: Set<RHSType> = new Set<RHSType>();\n if (useLiteralRHSType) setRhsTypes.add('LITERAL');\n if (useFieldRHSType) setRhsTypes.add('FIELD');\n if (dateFunctions) setRhsTypes.add('DATE_FUNCTION');\n if (useRelativeDatesType) setRhsTypes.add('RELATIVE_DATE');\n if (useParameterRHSType) setRhsTypes.add('PARAMETER');\n return setRhsTypes;\n};\n"]}
@@ -8,9 +8,10 @@ interface ConditionBuilderStoryProps {
8
8
  dateFunctions?: boolean;
9
9
  itemDirection?: 'column' | 'row';
10
10
  useLiteralRHSType?: boolean;
11
+ useParameterRHSType?: boolean;
11
12
  useFieldRHSType?: boolean;
12
13
  useRelativeDatesRHSType?: boolean;
13
- showLhsAsLabel?: boolean;
14
+ lhsMode?: 'input' | 'label' | 'hidden';
14
15
  }
15
16
  export declare const DefaultBuilder: Story<ConditionBuilderStoryProps>;
16
17
  export declare const FieldConditionDemo: Story<ConditionBuilderStoryProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionBuilder.stories.d.ts","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;;AA+B/C,wBAGU;AAEV,UAAU,0BAA0B;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,0BAA0B,CA8G5D,CAAC;AAgBF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,0BAA0B,CAqGhE,CAAC;AAcF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,0BAA0B,CAyJjE,CAAC"}
1
+ {"version":3,"file":"ConditionBuilder.stories.d.ts","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;;AA+B/C,wBAGU;AAEV,UAAU,0BAA0B;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;CACxC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,0BAA0B,CAgH5D,CAAC;AAgBF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,0BAA0B,CAqGhE,CAAC;AAcF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,0BAA0B,CA4JjE,CAAC"}
@@ -39,16 +39,16 @@ export const DefaultBuilder = (args) => {
39
39
  hidePopover(); // Call the method when Escape key is pressed
40
40
  };
41
41
  const handle = useRef(null);
42
- const builderJsx = (_jsxs(_Fragment, { children: [_jsx(ConditionBuilder, { fields: demoFields, condition: condition, validComparators: args.validComparators ? demoComparators : undefined, validRhsTypes: new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE']), dateFunctions: args.dateFunctions ? demoDateFunctions : undefined, disallowNOT: args.disallowNOT, handle: handle }), _jsx(Button, { variant: 'primary', onClick: () => {
43
- if (handle?.current) {
44
- const [valid, newCondition] = handle.current.getCondition();
45
- if (valid) {
46
- setCondition(newCondition);
47
- hidePopover();
48
- sessionStorage.setItem('CBDemoCondition', JSON.stringify(newCondition)); // Persist on sessionStorage for the next time
42
+ const builderJsx = (_jsxs(_Fragment, { children: [_jsx(ConditionBuilder, { fields: demoFields, condition: condition, validComparators: args.validComparators ? demoComparators : undefined, validRhsTypes: new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE', 'PARAMETER']), dateFunctions: args.dateFunctions ? demoDateFunctions : undefined, disallowNOT: args.disallowNOT, handle: handle }), _jsx(Flex, { container: { justify: 'end' }, children: _jsx(Button, { variant: 'primary', onClick: () => {
43
+ if (handle?.current) {
44
+ const [valid, newCondition] = handle.current.getCondition();
45
+ if (valid) {
46
+ setCondition(newCondition);
47
+ hidePopover();
48
+ sessionStorage.setItem('CBDemoCondition', JSON.stringify(newCondition)); // Persist on sessionStorage for the next time
49
+ }
49
50
  }
50
- }
51
- }, children: "Submit" })] }));
51
+ }, children: "Submit" }) })] }));
52
52
  return (_jsxs(StyledGrid, { container: {
53
53
  cols: '1fr',
54
54
  rowGap: 3
@@ -84,7 +84,7 @@ export const FieldConditionDemo = (args) => {
84
84
  hidePopover(); // Call the method when Escape key is pressed
85
85
  };
86
86
  const handle = useRef(null);
87
- const builderJsx = (_jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(FieldCondition, { targetField: 'lastActivityAt', fields: demoFields, condition: condition, validComparators: args.validComparators ? demoComparators : undefined, validRhsTypes: new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE']), dateFunctions: args.dateFunctions ? demoDateFunctions : undefined, handle: handle }), _jsx(Flex, { container: { justify: 'end' }, children: _jsx(Button, { name: 'field-condition-submit', variant: 'primary', onClick: () => {
87
+ const builderJsx = (_jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(FieldCondition, { targetField: 'technicalDetails.lastActivityAt', fields: demoFields, condition: condition, validComparators: args.validComparators ? demoComparators : undefined, validRhsTypes: new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE']), dateFunctions: args.dateFunctions ? demoDateFunctions : undefined, handle: handle }), _jsx(Flex, { container: { justify: 'end' }, children: _jsx(Button, { name: 'field-condition-submit', variant: 'primary', onClick: () => {
88
88
  if (!handle.current)
89
89
  return;
90
90
  const [isValid, c] = handle.current.getCondition();
@@ -112,7 +112,7 @@ FieldConditionDemo.argTypes = {
112
112
  };
113
113
  export const AtomicConditionDemo = (args) => {
114
114
  const translate = useI18n();
115
- const validRHSTypes = convertRhsTypes(!!args.useLiteralRHSType, !!args.useFieldRHSType, !!args.useRelativeDatesRHSType, args.dateFunctions ? demoDateFunctions : undefined);
115
+ const validRHSTypes = convertRhsTypes(!!args.useLiteralRHSType, !!args.useFieldRHSType, !!args.useRelativeDatesRHSType, !!args.useParameterRHSType, args.dateFunctions ? demoDateFunctions : undefined);
116
116
  // Story State object to simulate "submitting"
117
117
  const [submitCondition, setSubmitCondition] = useState(undefined);
118
118
  // State needed to use Popover in Story
@@ -134,7 +134,7 @@ export const AtomicConditionDemo = (args) => {
134
134
  const [condition, setCondition] = useState(
135
135
  // If editing use the seedCondition, otherwise, determine an initial condition based on the targetField
136
136
  () => submitCondition ||
137
- getInitConditionForLhs({ field: 'age' }, demoFields, validRHSTypes, args.validComparators ? demoComparators : undefined, args.dateFunctions ? demoDateFunctions : undefined));
137
+ getInitConditionForLhs({ field: 'details.age' }, demoFields, validRHSTypes, args.validComparators ? demoComparators : undefined, args.dateFunctions ? demoDateFunctions : undefined));
138
138
  const handleSubmission = () => {
139
139
  setShowErrorIndicators(false);
140
140
  if (isValidCondition(condition, demoFields, true)) {
@@ -147,7 +147,7 @@ export const AtomicConditionDemo = (args) => {
147
147
  setShowErrorIndicators(true);
148
148
  }
149
149
  };
150
- const atomicConditionJSX = (_jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(AtomicCondition, { condition: condition, fields: demoFields, indicateErrors: showErrorIndicators, validComparators: args.validComparators ? demoComparators : undefined, dateFunctions: args.dateFunctions ? demoDateFunctions : undefined, onChange: c => setCondition(c), itemDirection: args.itemDirection, showLhsAsLabel: args.showLhsAsLabel, validRhsTypes: validRHSTypes }), _jsx(Button, { variant: 'primary', onClick: handleSubmission, children: "Submit Condition" })] }));
150
+ const atomicConditionJSX = (_jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(AtomicCondition, { condition: condition, fields: demoFields, indicateErrors: showErrorIndicators, validComparators: args.validComparators ? demoComparators : undefined, dateFunctions: args.dateFunctions ? demoDateFunctions : undefined, onChange: c => setCondition(c), itemDirection: args.itemDirection, lhsMode: args.lhsMode, validRhsTypes: validRHSTypes }), _jsx(Flex, { container: { justify: 'end' }, children: _jsx(Button, { variant: 'primary', onClick: handleSubmission, children: "Submit" }) })] }));
151
151
  return (_jsxs(StyledGrid, { container: {
152
152
  cols: 'repeat(2, minmax(0, 1fr))',
153
153
  justifyItems: 'stretch',
@@ -163,9 +163,10 @@ AtomicConditionDemo.args = {
163
163
  dateFunctions: true,
164
164
  itemDirection: 'column',
165
165
  useLiteralRHSType: true,
166
+ useParameterRHSType: true,
166
167
  useFieldRHSType: true,
167
168
  useRelativeDatesRHSType: true,
168
- showLhsAsLabel: false
169
+ lhsMode: 'input'
169
170
  };
170
171
  AtomicConditionDemo.argTypes = {
171
172
  validComparators: { control: { type: 'boolean' } },
@@ -173,8 +174,9 @@ AtomicConditionDemo.argTypes = {
173
174
  dateFunctions: { control: { type: 'boolean' } },
174
175
  itemDirection: { options: ['column', 'row'], control: { type: 'select' } },
175
176
  useLiteralRHSType: { control: { type: 'boolean' } },
177
+ useParameterRHSType: { control: { type: 'boolean' } },
176
178
  useFieldRHSType: { control: { type: 'boolean' } },
177
179
  useRelativeDatesRHSType: { control: { type: 'boolean' } },
178
- showLhsAsLabel: { control: { type: 'boolean' } }
180
+ lhsMode: { options: ['input', 'label', 'hidden'], control: { type: 'select' } }
179
181
  };
180
182
  //# sourceMappingURL=ConditionBuilder.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionBuilder.stories.js","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable react/no-unescaped-entities */\nimport { useRef, useState } from 'react';\nimport { Meta, Story } from '@storybook/react';\n\nimport {\n Card,\n CardContent,\n Text,\n Button,\n Popover,\n useElement,\n useOuterEvent,\n Flex,\n useI18n\n} from '@pega/cosmos-react-core';\nimport {\n ConditionBuilder,\n FieldCondition,\n AtomicCondition,\n getInitConditionForLhs,\n isValidCondition,\n Condition,\n LeafCondition,\n formatCondition,\n RHSType\n} from '@pega/cosmos-react-condition-builder';\nimport { HandleValue as ConditionBuilderHandleValue } from '@pega/cosmos-react-condition-builder/lib/components/ConditionBuilder/ConditionBuilder.types';\nimport { HandleValue as FieldConditionHandleValue } from '@pega/cosmos-react-condition-builder/lib/components/ConditionBuilder/FieldCondition.types';\n\nimport { demoFields, demoCondition, demoComparators, demoDateFunctions } from './props.mock';\nimport { StyledCodeBlock, StyledGrid, StyledList } from './ConditionBuilder.styles';\nimport { convertRhsTypes } from './ConditionBuilder.mocks';\n\nexport default {\n title: 'Condition Builder/ConditionBuilder',\n component: ConditionBuilder\n} as Meta;\n\ninterface ConditionBuilderStoryProps {\n validComparators?: boolean;\n disallowNOT?: boolean;\n renderInPopover?: boolean;\n dateFunctions?: boolean;\n itemDirection?: 'column' | 'row';\n useLiteralRHSType?: boolean;\n useFieldRHSType?: boolean;\n useRelativeDatesRHSType?: boolean;\n showLhsAsLabel?: boolean;\n}\n\nexport const DefaultBuilder: Story<ConditionBuilderStoryProps> = (\n args: ConditionBuilderStoryProps\n) => {\n const translate = useI18n();\n const [condition, setCondition] = useState<Condition | undefined>(() => {\n // If a previous condition exists on the session, use it\n const prevCondition = sessionStorage.getItem('CBDemoCondition');\n if (prevCondition !== null) {\n // If an empty condition was submitted previously, start with an empty one\n if (prevCondition === 'undefined') {\n return undefined;\n }\n return JSON.parse(prevCondition);\n }\n return demoCondition;\n });\n\n // Set up content for rendering inside a Popover\n const buttonRef = useRef(null); // Ref for the opener button\n const [isOpen, setIsOpen] = useState(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const hidePopover = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n\n useOuterEvent('mousedown', [popoverEl, buttonRef.current], hidePopover); // Call the method on clicking outside these elements\n const hideOnEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') hidePopover(); // Call the method when Escape key is pressed\n };\n\n const handle = useRef<ConditionBuilderHandleValue>(null);\n\n const builderJsx = (\n <>\n <ConditionBuilder\n fields={demoFields}\n condition={condition}\n validComparators={args.validComparators ? demoComparators : undefined}\n validRhsTypes={new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE'])}\n dateFunctions={args.dateFunctions ? demoDateFunctions : undefined}\n disallowNOT={args.disallowNOT}\n handle={handle}\n />\n <Button\n variant='primary'\n onClick={() => {\n if (handle?.current) {\n const [valid, newCondition] = handle.current.getCondition();\n if (valid) {\n setCondition(newCondition);\n hidePopover();\n sessionStorage.setItem('CBDemoCondition', JSON.stringify(newCondition)); // Persist on sessionStorage for the next time\n }\n }\n }}\n >\n Submit\n </Button>\n </>\n );\n\n return (\n <StyledGrid\n container={{\n cols: '1fr',\n rowGap: 3\n }}\n >\n {!args.renderInPopover && builderJsx}\n\n {args.renderInPopover && (\n <>\n <Button\n ref={buttonRef}\n aria-haspopup\n aria-expanded={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={hideOnEscape}\n >\n Open Condition builder\n </Button>\n\n <Popover\n show={isOpen}\n ref={setPopoverEl}\n target={buttonRef.current}\n placement='bottom-start'\n >\n <Flex container={{ pad: 1, direction: 'column' }}>{builderJsx}</Flex>\n </Popover>\n </>\n )}\n\n <div>\n <Text variant='h4'>Output:</Text>\n <StyledCodeBlock>\n {condition ? JSON.stringify(condition, null, 2) : '(No condition)'}\n </StyledCodeBlock>\n </div>\n\n <div>\n <Text variant='h4'>Formatted Output:</Text>\n <StyledCodeBlock>\n {condition ? formatCondition(condition, demoFields, translate) : '(No condition)'}\n </StyledCodeBlock>\n </div>\n </StyledGrid>\n );\n};\n\nDefaultBuilder.args = {\n validComparators: false,\n disallowNOT: false,\n renderInPopover: false,\n dateFunctions: true\n};\n\nDefaultBuilder.argTypes = {\n validComparators: { control: { type: 'boolean' } },\n disallowNOT: { control: { type: 'boolean' } },\n renderInPopover: { control: { type: 'boolean' } },\n dateFunctions: { control: { type: 'boolean' } }\n};\n\nexport const FieldConditionDemo: Story<ConditionBuilderStoryProps> = (\n args: ConditionBuilderStoryProps\n) => {\n const translate = useI18n();\n const [condition, setCondition] = useState<LeafCondition | undefined>(undefined);\n\n // Set up content for rendering inside a Popover\n const buttonRef = useRef(null); // Ref for the opener button\n const [isOpen, setIsOpen] = useState(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const hidePopover = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n useOuterEvent('mousedown', [popoverEl, buttonRef.current], hidePopover); // Call the method on clicking outside these elements\n const hideOnEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') hidePopover(); // Call the method when Escape key is pressed\n };\n\n const handle = useRef<FieldConditionHandleValue>(null);\n\n const builderJsx = (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <FieldCondition\n targetField='lastActivityAt'\n fields={demoFields}\n condition={condition}\n validComparators={args.validComparators ? demoComparators : undefined}\n validRhsTypes={new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE'])}\n dateFunctions={args.dateFunctions ? demoDateFunctions : undefined}\n handle={handle}\n />\n\n <Flex container={{ justify: 'end' }}>\n <Button\n name='field-condition-submit'\n variant='primary'\n onClick={() => {\n if (!handle.current) return;\n\n const [isValid, c] = handle.current.getCondition();\n if (!isValid) return;\n\n hidePopover();\n setCondition(c);\n }}\n >\n Submit\n </Button>\n </Flex>\n </Flex>\n );\n\n return (\n <StyledGrid\n container={{\n cols: 'repeat(2, minmax(0, 1fr))',\n justifyItems: 'stretch',\n alignItems: 'start',\n colGap: 4\n }}\n >\n {!args.renderInPopover && builderJsx}\n\n {args.renderInPopover && (\n <>\n <Button\n ref={buttonRef}\n aria-haspopup\n aria-expanded={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={hideOnEscape}\n >\n Open Condition builder\n </Button>\n\n <Popover\n show={isOpen}\n ref={setPopoverEl}\n target={buttonRef.current}\n placement='bottom-start'\n >\n <Flex container={{ pad: 1 }}>{builderJsx}</Flex>\n </Popover>\n </>\n )}\n\n <div>\n <Text variant='h4'>Output:</Text>\n <StyledCodeBlock>\n {condition ? JSON.stringify(condition, null, 2) : '(No condition)'}\n </StyledCodeBlock>\n\n <Text variant='h4'>Formatted Output:</Text>\n <StyledCodeBlock>\n {condition ? formatCondition({ condition }, demoFields, translate) : '(No condition)'}\n </StyledCodeBlock>\n </div>\n </StyledGrid>\n );\n};\n\nFieldConditionDemo.args = {\n validComparators: false,\n renderInPopover: false,\n dateFunctions: true\n};\n\nFieldConditionDemo.argTypes = {\n validComparators: { control: { type: 'boolean' } },\n renderInPopover: { control: { type: 'boolean' } },\n dateFunctions: { control: { type: 'boolean' } }\n};\n\nexport const AtomicConditionDemo: Story<ConditionBuilderStoryProps> = (\n args: ConditionBuilderStoryProps\n) => {\n const translate = useI18n();\n\n const validRHSTypes: Set<RHSType> = convertRhsTypes(\n !!args.useLiteralRHSType,\n !!args.useFieldRHSType,\n !!args.useRelativeDatesRHSType,\n args.dateFunctions ? demoDateFunctions : undefined\n );\n\n // Story State object to simulate \"submitting\"\n const [submitCondition, setSubmitCondition] = useState<LeafCondition | undefined>(undefined);\n // State needed to use Popover in Story\n const buttonRef = useRef(null); // Ref for the opener button\n const [isOpen, setIsOpen] = useState(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const hidePopover = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n useOuterEvent('mousedown', [popoverEl, buttonRef.current], hidePopover); // Call the method on clicking outside these elements\n const hideOnEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') hidePopover(); // Call the method when Escape key is pressed\n };\n\n // State handling needed to manage/use the AtomicCondition component\n const [showErrorIndicators, setShowErrorIndicators] = useState(false);\n const [condition, setCondition] = useState(\n // If editing use the seedCondition, otherwise, determine an initial condition based on the targetField\n () =>\n submitCondition ||\n getInitConditionForLhs(\n { field: 'age' },\n demoFields,\n validRHSTypes,\n args.validComparators ? demoComparators : undefined,\n args.dateFunctions ? demoDateFunctions : undefined\n )\n );\n\n const handleSubmission = () => {\n setShowErrorIndicators(false);\n if (isValidCondition(condition, demoFields, true)) {\n // Insert all \"submit\" logic to use the valid condition that you've created.\n if (args.renderInPopover) setIsOpen(false);\n setSubmitCondition(condition);\n } else {\n setShowErrorIndicators(true);\n }\n };\n\n const atomicConditionJSX = (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <AtomicCondition\n condition={condition}\n fields={demoFields}\n indicateErrors={showErrorIndicators}\n validComparators={args.validComparators ? demoComparators : undefined}\n dateFunctions={args.dateFunctions ? demoDateFunctions : undefined}\n onChange={c => setCondition(c)}\n itemDirection={args.itemDirection}\n showLhsAsLabel={args.showLhsAsLabel}\n validRhsTypes={validRHSTypes}\n />\n <Button variant='primary' onClick={handleSubmission}>\n Submit Condition\n </Button>\n </Flex>\n );\n\n return (\n <StyledGrid\n container={{\n cols: 'repeat(2, minmax(0, 1fr))',\n justifyItems: 'stretch',\n alignItems: 'start',\n colGap: 4\n }}\n >\n {!args.renderInPopover && atomicConditionJSX}\n\n {args.renderInPopover && (\n <>\n <Button\n ref={buttonRef}\n aria-haspopup\n aria-expanded={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={hideOnEscape}\n >\n {`${isOpen ? 'Close' : 'Open'} Atomic Condition`}\n </Button>\n\n <Popover\n show={isOpen}\n ref={setPopoverEl}\n target={buttonRef.current}\n placement='bottom-start'\n >\n <Flex container={{ pad: 1 }}>{atomicConditionJSX}</Flex>\n </Popover>\n </>\n )}\n <Card>\n <CardContent>\n <Text variant='h4'>Output:</Text>\n <StyledCodeBlock>\n {submitCondition ? JSON.stringify(submitCondition, null, 2) : '(No condition)'}\n </StyledCodeBlock>\n\n <Text variant='h4'>Formatted Output:</Text>\n <StyledCodeBlock>\n {submitCondition\n ? formatCondition({ condition: submitCondition }, demoFields, translate)\n : '(No condition)'}\n </StyledCodeBlock>\n <Flex container={{ gap: 1, direction: 'column' }}>\n <Flex container={{ gap: 1, direction: 'column' }}>\n <Text variant='h2' status='error'>\n validRhsTypes Prop Warning\n </Text>\n <Text>\n There are LHS(Left Hand Side Field)/Comparator pairings that <u>require</u> specific\n RHS(Right Hand Side Value) types. Please be mindful of these incompatibilities when\n limiting RHS value types using this prop. We <b>do not</b> support limiting RHS\n field types to incompatible types and it will result in a validation error if you do\n so. The pairings referred to here are as follows:\n </Text>\n </Flex>\n <StyledList>\n <li>\n BOOLEAN LHS Fields coupled with \"EQ\" or \"NEQ\" comparators, will <u>always yield</u>{' '}\n a Field RHS\n </li>\n <li>\n Any LHS Fields coupled with \"IN\" or \"NOT_IN\" comparators, will <u>always yield</u> a\n Literal RHS (Comma separated list)\n </li>\n </StyledList>\n <Flex container={{ direction: 'column' }}>\n <Text>\n If you would like to limit RHS value types and avoid these incompatibilities, you\n will need to exclude these comparators using the <b>validComparators</b> prop.\n </Text>\n </Flex>\n </Flex>\n </CardContent>\n </Card>\n </StyledGrid>\n );\n};\n\nAtomicConditionDemo.args = {\n validComparators: false,\n renderInPopover: false,\n dateFunctions: true,\n itemDirection: 'column',\n useLiteralRHSType: true,\n useFieldRHSType: true,\n useRelativeDatesRHSType: true,\n showLhsAsLabel: false\n};\n\nAtomicConditionDemo.argTypes = {\n validComparators: { control: { type: 'boolean' } },\n renderInPopover: { control: { type: 'boolean' } },\n dateFunctions: { control: { type: 'boolean' } },\n itemDirection: { options: ['column', 'row'], control: { type: 'select' } },\n useLiteralRHSType: { control: { type: 'boolean' } },\n useFieldRHSType: { control: { type: 'boolean' } },\n useRelativeDatesRHSType: { control: { type: 'boolean' } },\n showLhsAsLabel: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"ConditionBuilder.stories.js","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/ConditionBuilder.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable react/no-unescaped-entities */\nimport { useRef, useState } from 'react';\nimport { Meta, Story } from '@storybook/react';\n\nimport {\n Card,\n CardContent,\n Text,\n Button,\n Popover,\n useElement,\n useOuterEvent,\n Flex,\n useI18n\n} from '@pega/cosmos-react-core';\nimport {\n ConditionBuilder,\n FieldCondition,\n AtomicCondition,\n getInitConditionForLhs,\n isValidCondition,\n Condition,\n LeafCondition,\n formatCondition,\n RHSType\n} from '@pega/cosmos-react-condition-builder';\nimport { HandleValue as ConditionBuilderHandleValue } from '@pega/cosmos-react-condition-builder/lib/components/ConditionBuilder/ConditionBuilder.types';\nimport { HandleValue as FieldConditionHandleValue } from '@pega/cosmos-react-condition-builder/lib/components/ConditionBuilder/FieldCondition.types';\n\nimport { demoFields, demoCondition, demoComparators, demoDateFunctions } from './props.mock';\nimport { StyledCodeBlock, StyledGrid, StyledList } from './ConditionBuilder.styles';\nimport { convertRhsTypes } from './ConditionBuilder.mocks';\n\nexport default {\n title: 'Condition Builder/ConditionBuilder',\n component: ConditionBuilder\n} as Meta;\n\ninterface ConditionBuilderStoryProps {\n validComparators?: boolean;\n disallowNOT?: boolean;\n renderInPopover?: boolean;\n dateFunctions?: boolean;\n itemDirection?: 'column' | 'row';\n useLiteralRHSType?: boolean;\n useParameterRHSType?: boolean;\n useFieldRHSType?: boolean;\n useRelativeDatesRHSType?: boolean;\n lhsMode?: 'input' | 'label' | 'hidden';\n}\n\nexport const DefaultBuilder: Story<ConditionBuilderStoryProps> = (\n args: ConditionBuilderStoryProps\n) => {\n const translate = useI18n();\n const [condition, setCondition] = useState<Condition | undefined>(() => {\n // If a previous condition exists on the session, use it\n const prevCondition = sessionStorage.getItem('CBDemoCondition');\n if (prevCondition !== null) {\n // If an empty condition was submitted previously, start with an empty one\n if (prevCondition === 'undefined') {\n return undefined;\n }\n return JSON.parse(prevCondition);\n }\n return demoCondition;\n });\n\n // Set up content for rendering inside a Popover\n const buttonRef = useRef(null); // Ref for the opener button\n const [isOpen, setIsOpen] = useState(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const hidePopover = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n\n useOuterEvent('mousedown', [popoverEl, buttonRef.current], hidePopover); // Call the method on clicking outside these elements\n const hideOnEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') hidePopover(); // Call the method when Escape key is pressed\n };\n\n const handle = useRef<ConditionBuilderHandleValue>(null);\n\n const builderJsx = (\n <>\n <ConditionBuilder\n fields={demoFields}\n condition={condition}\n validComparators={args.validComparators ? demoComparators : undefined}\n validRhsTypes={new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE', 'PARAMETER'])}\n dateFunctions={args.dateFunctions ? demoDateFunctions : undefined}\n disallowNOT={args.disallowNOT}\n handle={handle}\n />\n <Flex container={{ justify: 'end' }}>\n <Button\n variant='primary'\n onClick={() => {\n if (handle?.current) {\n const [valid, newCondition] = handle.current.getCondition();\n if (valid) {\n setCondition(newCondition);\n hidePopover();\n sessionStorage.setItem('CBDemoCondition', JSON.stringify(newCondition)); // Persist on sessionStorage for the next time\n }\n }\n }}\n >\n Submit\n </Button>\n </Flex>\n </>\n );\n\n return (\n <StyledGrid\n container={{\n cols: '1fr',\n rowGap: 3\n }}\n >\n {!args.renderInPopover && builderJsx}\n\n {args.renderInPopover && (\n <>\n <Button\n ref={buttonRef}\n aria-haspopup\n aria-expanded={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={hideOnEscape}\n >\n Open Condition builder\n </Button>\n\n <Popover\n show={isOpen}\n ref={setPopoverEl}\n target={buttonRef.current}\n placement='bottom-start'\n >\n <Flex container={{ pad: 1, direction: 'column' }}>{builderJsx}</Flex>\n </Popover>\n </>\n )}\n\n <div>\n <Text variant='h4'>Output:</Text>\n <StyledCodeBlock>\n {condition ? JSON.stringify(condition, null, 2) : '(No condition)'}\n </StyledCodeBlock>\n </div>\n\n <div>\n <Text variant='h4'>Formatted Output:</Text>\n <StyledCodeBlock>\n {condition ? formatCondition(condition, demoFields, translate) : '(No condition)'}\n </StyledCodeBlock>\n </div>\n </StyledGrid>\n );\n};\n\nDefaultBuilder.args = {\n validComparators: false,\n disallowNOT: false,\n renderInPopover: false,\n dateFunctions: true\n};\n\nDefaultBuilder.argTypes = {\n validComparators: { control: { type: 'boolean' } },\n disallowNOT: { control: { type: 'boolean' } },\n renderInPopover: { control: { type: 'boolean' } },\n dateFunctions: { control: { type: 'boolean' } }\n};\n\nexport const FieldConditionDemo: Story<ConditionBuilderStoryProps> = (\n args: ConditionBuilderStoryProps\n) => {\n const translate = useI18n();\n const [condition, setCondition] = useState<LeafCondition | undefined>(undefined);\n\n // Set up content for rendering inside a Popover\n const buttonRef = useRef(null); // Ref for the opener button\n const [isOpen, setIsOpen] = useState(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const hidePopover = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n useOuterEvent('mousedown', [popoverEl, buttonRef.current], hidePopover); // Call the method on clicking outside these elements\n const hideOnEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') hidePopover(); // Call the method when Escape key is pressed\n };\n\n const handle = useRef<FieldConditionHandleValue>(null);\n\n const builderJsx = (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <FieldCondition\n targetField='technicalDetails.lastActivityAt'\n fields={demoFields}\n condition={condition}\n validComparators={args.validComparators ? demoComparators : undefined}\n validRhsTypes={new Set(['LITERAL', 'FIELD', 'DATE_FUNCTION', 'RELATIVE_DATE'])}\n dateFunctions={args.dateFunctions ? demoDateFunctions : undefined}\n handle={handle}\n />\n\n <Flex container={{ justify: 'end' }}>\n <Button\n name='field-condition-submit'\n variant='primary'\n onClick={() => {\n if (!handle.current) return;\n\n const [isValid, c] = handle.current.getCondition();\n if (!isValid) return;\n\n hidePopover();\n setCondition(c);\n }}\n >\n Submit\n </Button>\n </Flex>\n </Flex>\n );\n\n return (\n <StyledGrid\n container={{\n cols: 'repeat(2, minmax(0, 1fr))',\n justifyItems: 'stretch',\n alignItems: 'start',\n colGap: 4\n }}\n >\n {!args.renderInPopover && builderJsx}\n\n {args.renderInPopover && (\n <>\n <Button\n ref={buttonRef}\n aria-haspopup\n aria-expanded={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={hideOnEscape}\n >\n Open Condition builder\n </Button>\n\n <Popover\n show={isOpen}\n ref={setPopoverEl}\n target={buttonRef.current}\n placement='bottom-start'\n >\n <Flex container={{ pad: 1 }}>{builderJsx}</Flex>\n </Popover>\n </>\n )}\n\n <div>\n <Text variant='h4'>Output:</Text>\n <StyledCodeBlock>\n {condition ? JSON.stringify(condition, null, 2) : '(No condition)'}\n </StyledCodeBlock>\n\n <Text variant='h4'>Formatted Output:</Text>\n <StyledCodeBlock>\n {condition ? formatCondition({ condition }, demoFields, translate) : '(No condition)'}\n </StyledCodeBlock>\n </div>\n </StyledGrid>\n );\n};\n\nFieldConditionDemo.args = {\n validComparators: false,\n renderInPopover: false,\n dateFunctions: true\n};\n\nFieldConditionDemo.argTypes = {\n validComparators: { control: { type: 'boolean' } },\n renderInPopover: { control: { type: 'boolean' } },\n dateFunctions: { control: { type: 'boolean' } }\n};\n\nexport const AtomicConditionDemo: Story<ConditionBuilderStoryProps> = (\n args: ConditionBuilderStoryProps\n) => {\n const translate = useI18n();\n\n const validRHSTypes: Set<RHSType> = convertRhsTypes(\n !!args.useLiteralRHSType,\n !!args.useFieldRHSType,\n !!args.useRelativeDatesRHSType,\n !!args.useParameterRHSType,\n args.dateFunctions ? demoDateFunctions : undefined\n );\n\n // Story State object to simulate \"submitting\"\n const [submitCondition, setSubmitCondition] = useState<LeafCondition | undefined>(undefined);\n // State needed to use Popover in Story\n const buttonRef = useRef(null); // Ref for the opener button\n const [isOpen, setIsOpen] = useState(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const hidePopover = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n useOuterEvent('mousedown', [popoverEl, buttonRef.current], hidePopover); // Call the method on clicking outside these elements\n const hideOnEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') hidePopover(); // Call the method when Escape key is pressed\n };\n\n // State handling needed to manage/use the AtomicCondition component\n const [showErrorIndicators, setShowErrorIndicators] = useState(false);\n const [condition, setCondition] = useState(\n // If editing use the seedCondition, otherwise, determine an initial condition based on the targetField\n () =>\n submitCondition ||\n getInitConditionForLhs(\n { field: 'details.age' },\n demoFields,\n validRHSTypes,\n args.validComparators ? demoComparators : undefined,\n args.dateFunctions ? demoDateFunctions : undefined\n )\n );\n\n const handleSubmission = () => {\n setShowErrorIndicators(false);\n if (isValidCondition(condition, demoFields, true)) {\n // Insert all \"submit\" logic to use the valid condition that you've created.\n if (args.renderInPopover) setIsOpen(false);\n setSubmitCondition(condition);\n } else {\n setShowErrorIndicators(true);\n }\n };\n\n const atomicConditionJSX = (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <AtomicCondition\n condition={condition}\n fields={demoFields}\n indicateErrors={showErrorIndicators}\n validComparators={args.validComparators ? demoComparators : undefined}\n dateFunctions={args.dateFunctions ? demoDateFunctions : undefined}\n onChange={c => setCondition(c)}\n itemDirection={args.itemDirection}\n lhsMode={args.lhsMode}\n validRhsTypes={validRHSTypes}\n />\n <Flex container={{ justify: 'end' }}>\n <Button variant='primary' onClick={handleSubmission}>\n Submit\n </Button>\n </Flex>\n </Flex>\n );\n\n return (\n <StyledGrid\n container={{\n cols: 'repeat(2, minmax(0, 1fr))',\n justifyItems: 'stretch',\n alignItems: 'start',\n colGap: 4\n }}\n >\n {!args.renderInPopover && atomicConditionJSX}\n\n {args.renderInPopover && (\n <>\n <Button\n ref={buttonRef}\n aria-haspopup\n aria-expanded={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={hideOnEscape}\n >\n {`${isOpen ? 'Close' : 'Open'} Atomic Condition`}\n </Button>\n\n <Popover\n show={isOpen}\n ref={setPopoverEl}\n target={buttonRef.current}\n placement='bottom-start'\n >\n <Flex container={{ pad: 1 }}>{atomicConditionJSX}</Flex>\n </Popover>\n </>\n )}\n <Card>\n <CardContent>\n <Text variant='h4'>Output:</Text>\n <StyledCodeBlock>\n {submitCondition ? JSON.stringify(submitCondition, null, 2) : '(No condition)'}\n </StyledCodeBlock>\n\n <Text variant='h4'>Formatted Output:</Text>\n <StyledCodeBlock>\n {submitCondition\n ? formatCondition({ condition: submitCondition }, demoFields, translate)\n : '(No condition)'}\n </StyledCodeBlock>\n <Flex container={{ gap: 1, direction: 'column' }}>\n <Flex container={{ gap: 1, direction: 'column' }}>\n <Text variant='h2' status='error'>\n validRhsTypes Prop Warning\n </Text>\n <Text>\n There are LHS(Left Hand Side Field)/Comparator pairings that <u>require</u> specific\n RHS(Right Hand Side Value) types. Please be mindful of these incompatibilities when\n limiting RHS value types using this prop. We <b>do not</b> support limiting RHS\n field types to incompatible types and it will result in a validation error if you do\n so. The pairings referred to here are as follows:\n </Text>\n </Flex>\n <StyledList>\n <li>\n BOOLEAN LHS Fields coupled with \"EQ\" or \"NEQ\" comparators, will <u>always yield</u>{' '}\n a Field RHS\n </li>\n <li>\n Any LHS Fields coupled with \"IN\" or \"NOT_IN\" comparators, will <u>always yield</u> a\n Literal RHS (Comma separated list)\n </li>\n </StyledList>\n <Flex container={{ direction: 'column' }}>\n <Text>\n If you would like to limit RHS value types and avoid these incompatibilities, you\n will need to exclude these comparators using the <b>validComparators</b> prop.\n </Text>\n </Flex>\n </Flex>\n </CardContent>\n </Card>\n </StyledGrid>\n );\n};\n\nAtomicConditionDemo.args = {\n validComparators: false,\n renderInPopover: false,\n dateFunctions: true,\n itemDirection: 'column',\n useLiteralRHSType: true,\n useParameterRHSType: true,\n useFieldRHSType: true,\n useRelativeDatesRHSType: true,\n lhsMode: 'input'\n};\n\nAtomicConditionDemo.argTypes = {\n validComparators: { control: { type: 'boolean' } },\n renderInPopover: { control: { type: 'boolean' } },\n dateFunctions: { control: { type: 'boolean' } },\n itemDirection: { options: ['column', 'row'], control: { type: 'select' } },\n useLiteralRHSType: { control: { type: 'boolean' } },\n useParameterRHSType: { control: { type: 'boolean' } },\n useFieldRHSType: { control: { type: 'boolean' } },\n useRelativeDatesRHSType: { control: { type: 'boolean' } },\n lhsMode: { options: ['input', 'label', 'hidden'], control: { type: 'select' } }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"props.mock.d.ts","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/props.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACnB,KAAK,EACN,MAAM,sCAAsC,CAAC;AAE9C,eAAO,MAAM,UAAU,EAAE,KAAK,EAmG7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAiC3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAI9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,mBAqB/B,CAAC"}
1
+ {"version":3,"file":"props.mock.d.ts","sourceRoot":"","sources":["../../../src/condition-builder/ConditionBuilder/props.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACnB,KAAK,EACN,MAAM,sCAAsC,CAAC;AAE9C,eAAO,MAAM,UAAU,EAAE,KAAK,EAuJ7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAiC3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAI9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,mBAqB/B,CAAC"}