@pega/dx-component-builder-sdk 0.1.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 (279) hide show
  1. package/.access_token +1 -0
  2. package/.agilestudio +3 -0
  3. package/.eslintrc.json +18 -0
  4. package/.prettierignore +2 -0
  5. package/.prettierrc.json +1 -0
  6. package/LICENSE +185 -0
  7. package/README.md +199 -0
  8. package/bin/index.js +5 -0
  9. package/cspell.json +26 -0
  10. package/package.json +67 -0
  11. package/src/cli.js +104 -0
  12. package/src/constants.js +134 -0
  13. package/src/tasks/authenticate/helper.js +60 -0
  14. package/src/tasks/authenticate/index.js +81 -0
  15. package/src/tasks/build/helper.js +125 -0
  16. package/src/tasks/build/index.js +52 -0
  17. package/src/tasks/bundle/builder/index.js +218 -0
  18. package/src/tasks/bundle/builder/modules.js +139 -0
  19. package/src/tasks/bundle/builder/paths.js +50 -0
  20. package/src/tasks/bundle/builder/webpack.config.js +336 -0
  21. package/src/tasks/bundle/index.js +65 -0
  22. package/src/tasks/create/index.js +380 -0
  23. package/src/tasks/create/template/config.json.mustache +62 -0
  24. package/src/tasks/create/template/demo.stories.jsx.mustache +44 -0
  25. package/src/tasks/create/template/index.jsx.mustache +55 -0
  26. package/src/tasks/create/template/styles.js.mustache +7 -0
  27. package/src/tasks/create/templates/Constellation/Field/Boolean/Boolean.js.mustache +38 -0
  28. package/src/tasks/create/templates/Constellation/Field/Boolean/boolean-format.js.mustache +26 -0
  29. package/src/tasks/create/templates/Constellation/Field/Boolean/config.json.mustache +145 -0
  30. package/src/tasks/create/templates/Constellation/Field/Boolean/event-utils.js.mustache +18 -0
  31. package/src/tasks/create/templates/Constellation/Field/Boolean/index.jsx.mustache +171 -0
  32. package/src/tasks/create/templates/Constellation/Field/Boolean/styles.js.mustache +7 -0
  33. package/src/tasks/create/templates/Constellation/Field/Date/config.json.mustache +195 -0
  34. package/src/tasks/create/templates/Constellation/Field/Date/date.js.mustache +327 -0
  35. package/src/tasks/create/templates/Constellation/Field/Date/demo.stories.jsx.mustache +44 -0
  36. package/src/tasks/create/templates/Constellation/Field/Date/index.jsx.mustache +254 -0
  37. package/src/tasks/create/templates/Constellation/Field/Date/styles.js.mustache +7 -0
  38. package/src/tasks/create/templates/Constellation/Field/Date/suggestions-handler.js +10 -0
  39. package/src/tasks/create/templates/Constellation/Field/DateTime/config.json.mustache +256 -0
  40. package/src/tasks/create/templates/Constellation/Field/DateTime/date-time.js.mustache +93 -0
  41. package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.js +286 -0
  42. package/src/tasks/create/templates/Constellation/Field/DateTime/date.js.mustache +327 -0
  43. package/src/tasks/create/templates/Constellation/Field/DateTime/demo.stories.jsx.mustache +44 -0
  44. package/src/tasks/create/templates/Constellation/Field/DateTime/index.jsx.mustache +252 -0
  45. package/src/tasks/create/templates/Constellation/Field/DateTime/styles.js.mustache +7 -0
  46. package/src/tasks/create/templates/Constellation/Field/DateTime/suggestions-handler.js +10 -0
  47. package/src/tasks/create/templates/Constellation/Field/Decimal/config.json.mustache +278 -0
  48. package/src/tasks/create/templates/Constellation/Field/Decimal/demo.stories.jsx.mustache +44 -0
  49. package/src/tasks/create/templates/Constellation/Field/Decimal/event-utils.js.mustache +18 -0
  50. package/src/tasks/create/templates/Constellation/Field/Decimal/index.jsx.mustache +272 -0
  51. package/src/tasks/create/templates/Constellation/Field/Decimal/styles.js.mustache +7 -0
  52. package/src/tasks/create/templates/Constellation/Field/Decimal/suggestions-handler.js +10 -0
  53. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/config.json.mustache +291 -0
  54. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/demo.stories.jsx.mustache +44 -0
  55. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/event-utils.js.mustache +18 -0
  56. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/index.jsx.mustache +300 -0
  57. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/styles.js.mustache +7 -0
  58. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/suggestions-handler.js +10 -0
  59. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/config.json.mustache +93 -0
  60. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/demo.stories.jsx.mustache +44 -0
  61. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/event-utils.js.mustache +18 -0
  62. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/index.jsx.mustache +275 -0
  63. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/styles.js.mustache +7 -0
  64. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/suggestions-handler.js +10 -0
  65. package/src/tasks/create/templates/Constellation/Field/Integer/config.json.mustache +347 -0
  66. package/src/tasks/create/templates/Constellation/Field/Integer/demo.stories.jsx.mustache +44 -0
  67. package/src/tasks/create/templates/Constellation/Field/Integer/event-utils.js.mustache +18 -0
  68. package/src/tasks/create/templates/Constellation/Field/Integer/index.jsx.mustache +335 -0
  69. package/src/tasks/create/templates/Constellation/Field/Integer/styles.js.mustache +7 -0
  70. package/src/tasks/create/templates/Constellation/Field/Integer/suggestions-handler.js +10 -0
  71. package/src/tasks/create/templates/Constellation/Field/Picklist/config.json.mustache +114 -0
  72. package/src/tasks/create/templates/Constellation/Field/Picklist/demo.stories.jsx.mustache +44 -0
  73. package/src/tasks/create/templates/Constellation/Field/Picklist/event-utils.js.mustache +18 -0
  74. package/src/tasks/create/templates/Constellation/Field/Picklist/index.jsx.mustache +308 -0
  75. package/src/tasks/create/templates/Constellation/Field/Picklist/picklist.js.mustache +43 -0
  76. package/src/tasks/create/templates/Constellation/Field/Picklist/styles.js.mustache +7 -0
  77. package/src/tasks/create/templates/Constellation/Field/Picklist/suggestions-handler.js +10 -0
  78. package/src/tasks/create/templates/Constellation/Field/Text/config.json.mustache +62 -0
  79. package/src/tasks/create/templates/Constellation/Field/Text/demo.stories.jsx.mustache +44 -0
  80. package/src/tasks/create/templates/Constellation/Field/Text/index.jsx.mustache +60 -0
  81. package/src/tasks/create/templates/Constellation/Field/Text/styles.js.mustache +7 -0
  82. package/src/tasks/create/templates/Constellation/Field/Text-Email/config.json.mustache +111 -0
  83. package/src/tasks/create/templates/Constellation/Field/Text-Email/demo.stories.jsx.mustache +44 -0
  84. package/src/tasks/create/templates/Constellation/Field/Text-Email/event-utils.js.mustache +18 -0
  85. package/src/tasks/create/templates/Constellation/Field/Text-Email/index.jsx.mustache +189 -0
  86. package/src/tasks/create/templates/Constellation/Field/Text-Email/styles.js.mustache +7 -0
  87. package/src/tasks/create/templates/Constellation/Field/Text-Email/suggestions-handler.js +10 -0
  88. package/src/tasks/create/templates/Constellation/Field/Text-Email/text-email.js.mustache +43 -0
  89. package/src/tasks/create/templates/Constellation/Field/Text-Input/StatusWork.js +27 -0
  90. package/src/tasks/create/templates/Constellation/Field/Text-Input/config.json.mustache +111 -0
  91. package/src/tasks/create/templates/Constellation/Field/Text-Input/demo.stories.jsx.mustache +44 -0
  92. package/src/tasks/create/templates/Constellation/Field/Text-Input/event-utils.js.mustache +18 -0
  93. package/src/tasks/create/templates/Constellation/Field/Text-Input/index.jsx.mustache +196 -0
  94. package/src/tasks/create/templates/Constellation/Field/Text-Input/styles.js.mustache +7 -0
  95. package/src/tasks/create/templates/Constellation/Field/Text-Input/suggestions-handler.js +10 -0
  96. package/src/tasks/create/templates/Constellation/Field/Text-Input/text-input.js.mustache +43 -0
  97. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/config.json.mustache +111 -0
  98. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/demo.stories.jsx.mustache +44 -0
  99. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/event-utils.js.mustache +18 -0
  100. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/index.jsx.mustache +189 -0
  101. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/styles.js.mustache +7 -0
  102. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/suggestions-handler.js +10 -0
  103. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/text-paragraph.js.mustache +43 -0
  104. package/src/tasks/create/templates/Constellation/Field/Text-Phone/config.json.mustache +123 -0
  105. package/src/tasks/create/templates/Constellation/Field/Text-Phone/demo.stories.jsx.mustache +44 -0
  106. package/src/tasks/create/templates/Constellation/Field/Text-Phone/event-utils.js.mustache +18 -0
  107. package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.jsx.mustache +223 -0
  108. package/src/tasks/create/templates/Constellation/Field/Text-Phone/styles.js.mustache +7 -0
  109. package/src/tasks/create/templates/Constellation/Field/Text-Phone/suggestions-handler.js +10 -0
  110. package/src/tasks/create/templates/Constellation/Field/Text-Phone/text-phone.js.mustache +43 -0
  111. package/src/tasks/create/templates/Constellation/Field/Text-URL/config.json.mustache +237 -0
  112. package/src/tasks/create/templates/Constellation/Field/Text-URL/demo.stories.jsx.mustache +44 -0
  113. package/src/tasks/create/templates/Constellation/Field/Text-URL/event-utils.js.mustache +18 -0
  114. package/src/tasks/create/templates/Constellation/Field/Text-URL/index.jsx.mustache +232 -0
  115. package/src/tasks/create/templates/Constellation/Field/Text-URL/styles.js.mustache +7 -0
  116. package/src/tasks/create/templates/Constellation/Field/Text-URL/suggestions-handler.js +10 -0
  117. package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.js.mustache +172 -0
  118. package/src/tasks/create/templates/Constellation/Field/TimeofDay/config.json.mustache +185 -0
  119. package/src/tasks/create/templates/Constellation/Field/TimeofDay/demo.stories.jsx.mustache +44 -0
  120. package/src/tasks/create/templates/Constellation/Field/TimeofDay/index.jsx.mustache +213 -0
  121. package/src/tasks/create/templates/Constellation/Field/TimeofDay/styles.js.mustache +7 -0
  122. package/src/tasks/create/templates/Constellation/Field/TimeofDay/suggestions-handler.js +10 -0
  123. package/src/tasks/create/templates/Constellation/Field/TimeofDay/time-of-day.js.mustache +286 -0
  124. package/src/tasks/create/templates/Constellation/Template/DETAILS/OneColumnDetails.svg +22 -0
  125. package/src/tasks/create/templates/Constellation/Template/DETAILS/config.json.mustache +35 -0
  126. package/src/tasks/create/templates/Constellation/Template/DETAILS/index.jsx.mustache +88 -0
  127. package/src/tasks/create/templates/Constellation/Template/DETAILS/styles.js.mustache +7 -0
  128. package/src/tasks/create/templates/Constellation/Template/DETAILS/utils.js.mustache +155 -0
  129. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/TwoColumnDetails.svg +28 -0
  130. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/config.json.mustache +42 -0
  131. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.jsx.mustache +88 -0
  132. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/styles.js.mustache +7 -0
  133. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/utils.js.mustache +155 -0
  134. package/src/tasks/create/templates/Constellation/Template/FORM/DefaultForm.svg +29 -0
  135. package/src/tasks/create/templates/Constellation/Template/FORM/config.json.mustache +45 -0
  136. package/src/tasks/create/templates/Constellation/Template/FORM/index.jsx.mustache +49 -0
  137. package/src/tasks/create/templates/Constellation/Template/FORM/styles.js.mustache +7 -0
  138. package/src/tasks/create/templates/Constellation/Template/FORM-region/TwoColumn.svg +38 -0
  139. package/src/tasks/create/templates/Constellation/Template/FORM-region/config.json.mustache +27 -0
  140. package/src/tasks/create/templates/Constellation/Template/FORM-region/index.jsx.mustache +51 -0
  141. package/src/tasks/create/templates/Constellation/Template/FORM-region/styles.js.mustache +7 -0
  142. package/src/tasks/create/templates/Constellation/Template/PAGE/GetNextWork.js.mustache +29 -0
  143. package/src/tasks/create/templates/Constellation/Template/PAGE/OneColumnPage.svg +36 -0
  144. package/src/tasks/create/templates/Constellation/Template/PAGE/config.json.mustache +32 -0
  145. package/src/tasks/create/templates/Constellation/Template/PAGE/index.jsx.mustache +68 -0
  146. package/src/tasks/create/templates/Constellation/Template/PAGE/localizations.json.mustache +4 -0
  147. package/src/tasks/create/templates/Constellation/Template/PAGE/styles.js.mustache +7 -0
  148. package/src/tasks/create/templates/Constellation/Template/PAGE/utils.js.mustache +226 -0
  149. package/src/tasks/create/templates/Constellation/Widget/CASE/OneColumnPage.svg +36 -0
  150. package/src/tasks/create/templates/Constellation/Widget/CASE/config.json.mustache +23 -0
  151. package/src/tasks/create/templates/Constellation/Widget/CASE/index.jsx.mustache +75 -0
  152. package/src/tasks/create/templates/Constellation/Widget/CASE/styles.js.mustache +7 -0
  153. package/src/tasks/create/templates/Constellation/Widget/PAGE/OneColumnPage.svg +36 -0
  154. package/src/tasks/create/templates/Constellation/Widget/PAGE/config.json.mustache +59 -0
  155. package/src/tasks/create/templates/Constellation/Widget/PAGE/index.jsx.mustache +48 -0
  156. package/src/tasks/create/templates/Constellation/Widget/PAGE/styles.js.mustache +7 -0
  157. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Avatar.js.mustache +73 -0
  158. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/OneColumnPage.svg +36 -0
  159. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Operator.js.mustache +239 -0
  160. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/config.json.mustache +66 -0
  161. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/index.jsx.mustache +110 -0
  162. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/styles.js.mustache +7 -0
  163. package/src/tasks/create/templates/SDK-Angular/Field/__components.md +4 -0
  164. package/src/tasks/create/templates/SDK-Angular/Template/__components.md +4 -0
  165. package/src/tasks/create/templates/SDK-Angular/Widget/__components.md +4 -0
  166. package/src/tasks/create/templates/SDK-React/Field/Boolean/config.json.mustache +73 -0
  167. package/src/tasks/create/templates/SDK-React/Field/Boolean/demo.stories.jsx.mustache +44 -0
  168. package/src/tasks/create/templates/SDK-React/Field/Boolean/index.tsx.mustache +109 -0
  169. package/src/tasks/create/templates/SDK-React/Field/Boolean/styles.js.mustache +7 -0
  170. package/src/tasks/create/templates/SDK-React/Field/Date/config.json.mustache +133 -0
  171. package/src/tasks/create/templates/SDK-React/Field/Date/demo.stories.jsx.mustache +44 -0
  172. package/src/tasks/create/templates/SDK-React/Field/Date/index.tsx.mustache +122 -0
  173. package/src/tasks/create/templates/SDK-React/Field/Date/styles.js.mustache +7 -0
  174. package/src/tasks/create/templates/SDK-React/Field/DateTime/config.json.mustache +190 -0
  175. package/src/tasks/create/templates/SDK-React/Field/DateTime/demo.stories.jsx.mustache +44 -0
  176. package/src/tasks/create/templates/SDK-React/Field/DateTime/index.tsx.mustache +112 -0
  177. package/src/tasks/create/templates/SDK-React/Field/DateTime/styles.js.mustache +7 -0
  178. package/src/tasks/create/templates/SDK-React/Field/Decimal/config.json.mustache +80 -0
  179. package/src/tasks/create/templates/SDK-React/Field/Decimal/demo.stories.jsx.mustache +44 -0
  180. package/src/tasks/create/templates/SDK-React/Field/Decimal/index.tsx.mustache +105 -0
  181. package/src/tasks/create/templates/SDK-React/Field/Decimal/styles.js.mustache +7 -0
  182. package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/config.json.mustache +111 -0
  183. package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/demo.stories.jsx.mustache +44 -0
  184. package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/index.tsx.mustache +131 -0
  185. package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/styles.js.mustache +7 -0
  186. package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/config.json.mustache +80 -0
  187. package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/demo.stories.jsx.mustache +44 -0
  188. package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/index.tsx.mustache +128 -0
  189. package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/styles.js.mustache +7 -0
  190. package/src/tasks/create/templates/SDK-React/Field/Integer/config.json.mustache +74 -0
  191. package/src/tasks/create/templates/SDK-React/Field/Integer/demo.stories.jsx.mustache +44 -0
  192. package/src/tasks/create/templates/SDK-React/Field/Integer/index.tsx.mustache +124 -0
  193. package/src/tasks/create/templates/SDK-React/Field/Integer/styles.js.mustache +7 -0
  194. package/src/tasks/create/templates/SDK-React/Field/Picklist/config.json.mustache +72 -0
  195. package/src/tasks/create/templates/SDK-React/Field/Picklist/demo.stories.jsx.mustache +44 -0
  196. package/src/tasks/create/templates/SDK-React/Field/Picklist/index.tsx.mustache +141 -0
  197. package/src/tasks/create/templates/SDK-React/Field/Picklist/styles.js.mustache +7 -0
  198. package/src/tasks/create/templates/SDK-React/Field/Text/config.json.mustache +69 -0
  199. package/src/tasks/create/templates/SDK-React/Field/Text/demo.stories.jsx.mustache +44 -0
  200. package/src/tasks/create/templates/SDK-React/Field/Text/index.tsx.mustache +119 -0
  201. package/src/tasks/create/templates/SDK-React/Field/Text/styles.js.mustache +7 -0
  202. package/src/tasks/create/templates/SDK-React/Field/Text-Email/config.json.mustache +69 -0
  203. package/src/tasks/create/templates/SDK-React/Field/Text-Email/demo.stories.jsx.mustache +44 -0
  204. package/src/tasks/create/templates/SDK-React/Field/Text-Email/index.tsx.mustache +121 -0
  205. package/src/tasks/create/templates/SDK-React/Field/Text-Email/styles.js.mustache +7 -0
  206. package/src/tasks/create/templates/SDK-React/Field/Text-Input/config.json.mustache +69 -0
  207. package/src/tasks/create/templates/SDK-React/Field/Text-Input/demo.stories.jsx.mustache +44 -0
  208. package/src/tasks/create/templates/SDK-React/Field/Text-Input/index.tsx.mustache +119 -0
  209. package/src/tasks/create/templates/SDK-React/Field/Text-Input/styles.js.mustache +7 -0
  210. package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/config.json.mustache +69 -0
  211. package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/demo.stories.jsx.mustache +44 -0
  212. package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/index.tsx.mustache +123 -0
  213. package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/styles.js.mustache +7 -0
  214. package/src/tasks/create/templates/SDK-React/Field/Text-Phone/config.json.mustache +81 -0
  215. package/src/tasks/create/templates/SDK-React/Field/Text-Phone/demo.stories.jsx.mustache +44 -0
  216. package/src/tasks/create/templates/SDK-React/Field/Text-Phone/index.tsx.mustache +147 -0
  217. package/src/tasks/create/templates/SDK-React/Field/Text-Phone/styles.js.mustache +7 -0
  218. package/src/tasks/create/templates/SDK-React/Field/Text-URL/config.json.mustache +111 -0
  219. package/src/tasks/create/templates/SDK-React/Field/Text-URL/demo.stories.jsx.mustache +44 -0
  220. package/src/tasks/create/templates/SDK-React/Field/Text-URL/index.tsx.mustache +98 -0
  221. package/src/tasks/create/templates/SDK-React/Field/Text-URL/styles.js.mustache +7 -0
  222. package/src/tasks/create/templates/SDK-React/Field/TimeofDay/config.json.mustache +121 -0
  223. package/src/tasks/create/templates/SDK-React/Field/TimeofDay/demo.stories.jsx.mustache +44 -0
  224. package/src/tasks/create/templates/SDK-React/Field/TimeofDay/index.tsx.mustache +120 -0
  225. package/src/tasks/create/templates/SDK-React/Field/TimeofDay/styles.js.mustache +7 -0
  226. package/src/tasks/create/templates/SDK-React/Template/DETAILS/DefaultForm.svg +29 -0
  227. package/src/tasks/create/templates/SDK-React/Template/DETAILS/config.json.mustache +21 -0
  228. package/src/tasks/create/templates/SDK-React/Template/DETAILS/index.tsx.mustache +45 -0
  229. package/src/tasks/create/templates/SDK-React/Template/DETAILS/styles.js.mustache +7 -0
  230. package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/TwoColumnDetails.svg +28 -0
  231. package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/config.json.mustache +27 -0
  232. package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/index.tsx.mustache +53 -0
  233. package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/styles.js.mustache +7 -0
  234. package/src/tasks/create/templates/SDK-React/Template/FORM/DefaultForm.css +25 -0
  235. package/src/tasks/create/templates/SDK-React/Template/FORM/DefaultForm.svg +29 -0
  236. package/src/tasks/create/templates/SDK-React/Template/FORM/config.json.mustache +45 -0
  237. package/src/tasks/create/templates/SDK-React/Template/FORM/index.tsx.mustache +63 -0
  238. package/src/tasks/create/templates/SDK-React/Template/FORM/styles.js.mustache +7 -0
  239. package/src/tasks/create/templates/SDK-React/Template/FORM-region/TwoColumn.svg +38 -0
  240. package/src/tasks/create/templates/SDK-React/Template/FORM-region/config.json.mustache +49 -0
  241. package/src/tasks/create/templates/SDK-React/Template/FORM-region/index.tsx.mustache +69 -0
  242. package/src/tasks/create/templates/SDK-React/Template/FORM-region/styles.js.mustache +7 -0
  243. package/src/tasks/create/templates/SDK-React/Template/PAGE/OneColumn.tsx.mustache +32 -0
  244. package/src/tasks/create/templates/SDK-React/Template/PAGE/OneColumnPage.svg +28 -0
  245. package/src/tasks/create/templates/SDK-React/Template/PAGE/config.json.mustache +32 -0
  246. package/src/tasks/create/templates/SDK-React/Template/PAGE/index.tsx.mustache +31 -0
  247. package/src/tasks/create/templates/SDK-React/Template/PAGE/styles.js.mustache +7 -0
  248. package/src/tasks/create/templates/SDK-React/Widget/CASE/OneColumnPage.svg +36 -0
  249. package/src/tasks/create/templates/SDK-React/Widget/CASE/config.json.mustache +23 -0
  250. package/src/tasks/create/templates/SDK-React/Widget/CASE/index.tsx.mustache +183 -0
  251. package/src/tasks/create/templates/SDK-React/Widget/CASE/styles.js.mustache +7 -0
  252. package/src/tasks/create/templates/SDK-React/Widget/PAGE/OneColumnPage.svg +36 -0
  253. package/src/tasks/create/templates/SDK-React/Widget/PAGE/config.json.mustache +59 -0
  254. package/src/tasks/create/templates/SDK-React/Widget/PAGE/index.tsx.mustache +78 -0
  255. package/src/tasks/create/templates/SDK-React/Widget/PAGE/styles.js.mustache +7 -0
  256. package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/OneColumnPage.svg +36 -0
  257. package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/config.json.mustache +66 -0
  258. package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/index.tsx.mustache +239 -0
  259. package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/styles.js.mustache +7 -0
  260. package/src/tasks/create/templates/SDK-WebComponents/Field/__components.md +4 -0
  261. package/src/tasks/create/templates/SDK-WebComponents/Template/__components.md +4 -0
  262. package/src/tasks/create/templates/SDK-WebComponents/Widget/__components.md +4 -0
  263. package/src/tasks/delete/helper.js +122 -0
  264. package/src/tasks/delete/index.js +45 -0
  265. package/src/tasks/delete-all/helper.js +177 -0
  266. package/src/tasks/delete-all/index.js +45 -0
  267. package/src/tasks/index.js +11 -0
  268. package/src/tasks/linter/index.js +46 -0
  269. package/src/tasks/list/helper.js +118 -0
  270. package/src/tasks/list/index.js +51 -0
  271. package/src/tasks/map/map.js +118 -0
  272. package/src/tasks/publish/helper.js +147 -0
  273. package/src/tasks/publish/index.js +72 -0
  274. package/src/tasks/publish-all/helper.js +139 -0
  275. package/src/tasks/publish-all/index.js +84 -0
  276. package/src/tasks/update/index.js +5 -0
  277. package/src/tasks/upgrade/index.js +31 -0
  278. package/src/tasks/validator/index.js +216 -0
  279. package/src/util.js +442 -0
@@ -0,0 +1,286 @@
1
+ import dayjs from "dayjs";
2
+
3
+ const relativeTime = require("dayjs/plugin/relativeTime");
4
+
5
+ dayjs.extend(relativeTime);
6
+
7
+ const utc = require("dayjs/plugin/utc");
8
+
9
+ dayjs.extend(utc);
10
+
11
+ /**
12
+ * Return relative time in fromNow for the given datetime
13
+ * @description Convert and return the given datetime in dayJSObject
14
+ *
15
+ * @param {string} text datetime
16
+ * @returns {object} datetime as a dayjs object
17
+ */
18
+ export const getDayJSObject = (text) => {
19
+ const momObj = dayjs(text);
20
+ if (momObj.isValid()) return momObj;
21
+ const timeStamp = text;
22
+ const isDateTime = timeStamp.indexOf("GMT") !== -1;
23
+ const year = parseInt(timeStamp.substr(0, 4), 10);
24
+ const month = parseInt(timeStamp.substr(4, 2), 10) - 1;
25
+ const day = parseInt(timeStamp.substr(6, 2), 10);
26
+
27
+ const CurrentTz = PCore.getLocaleUtils().getTimeZoneInUse();
28
+
29
+ let mom = new Date();
30
+
31
+ mom.setUTCDate(day);
32
+ mom.setUTCMonth(month);
33
+ mom.setUTCFullYear(year);
34
+
35
+ /* istanbul ignore else */
36
+ if (isDateTime) {
37
+ const hours = parseInt(timeStamp.substr(9, 2), 10);
38
+ const minutes = parseInt(timeStamp.substr(11, 2), 10);
39
+ const seconds = parseInt(timeStamp.substr(13, 2), 10);
40
+ const ms = parseInt(timeStamp.substr(16, 3), 10);
41
+ mom.setUTCHours(hours);
42
+ mom.setUTCMinutes(minutes);
43
+ mom.setUTCSeconds(seconds);
44
+ mom.setUTCMilliseconds(ms);
45
+ }
46
+
47
+ mom = dayjs(
48
+ mom.toLocaleString("en-US", {
49
+ timeZone: CurrentTz
50
+ })
51
+ );
52
+
53
+ return mom;
54
+ };
55
+
56
+ /**
57
+ * Return relative time in fromNow for the given datetime
58
+ *
59
+ * @param {string} time datetime
60
+ * @returns {object} relative time from now
61
+ */
62
+ export const getRelativeTime = (time) => {
63
+ let relativetime = "";
64
+ if (dayjs(time).isUTC()) {
65
+ relativetime = dayjs(time).fromNow();
66
+ } else {
67
+ const dayjstime = getDayJSObject(time);
68
+ relativetime = dayjs(dayjstime).fromNow();
69
+ }
70
+ return relativetime;
71
+ };
72
+
73
+ /**
74
+ * Return year for the date passed
75
+ *
76
+ * @param {string} value from which Year needs to be taken out
77
+ * @returns {number} year for the date passed
78
+ */
79
+ export const getFullYear = (value) =>
80
+ value ? new Date(value).getFullYear() : new Date().getFullYear();
81
+
82
+ /**
83
+ * Return maxDate for the date passed
84
+ *
85
+ * @param {number} nextYears next number of years
86
+ * @param {number} currentYear current year
87
+ * @param {number} yearFromValue year set on value in redux
88
+ *
89
+ * @returns {string} maxDate calculated based on inputs
90
+ */
91
+ export const getMaxDate = (nextYears, currentYear, yearFromValue) => {
92
+ if (Number.isNaN(nextYears)) {
93
+ nextYears = 20;
94
+ }
95
+ let maxYear = currentYear + nextYears;
96
+ if (yearFromValue > maxYear) {
97
+ maxYear = yearFromValue;
98
+ }
99
+ return `${maxYear}-01-01`;
100
+ };
101
+
102
+ /**
103
+ * Return minDate for the date passed
104
+ *
105
+ * @param {number} previousYears previous number of years
106
+ * @param {number} currentYear current year
107
+ * @param {number} yearFromValue year set on value in redux
108
+ *
109
+ * @returns {string} minDate calculated based on inputs
110
+ */
111
+ export const getMinDate = (previousYears, currentYear, yearFromValue) => {
112
+ if (Number.isNaN(previousYears)) {
113
+ previousYears = 100;
114
+ }
115
+ let minYear = currentYear - previousYears;
116
+ if (yearFromValue < minYear) {
117
+ minYear = yearFromValue;
118
+ }
119
+ return `${minYear}-12-31`;
120
+ };
121
+
122
+ /**
123
+ * Return clockFormat after parsing
124
+ *
125
+ * @param {number | string} clockFormat chosen by user
126
+ *
127
+ * @returns {number} clockFormat
128
+ */
129
+ export const parseClockFormat = (clockFormat) =>
130
+ typeof clockFormat === "string" ? parseInt(clockFormat, 10) : clockFormat;
131
+
132
+ /**
133
+ * Return datetime value string off to seconds
134
+ *
135
+ * @param {string} datetime in ISO format
136
+ * @param {boolean} withSeconds to specify if seconds is needed or not
137
+ *
138
+ * @returns {string} datetime after stripping of ms and seconds if selected to
139
+ */
140
+ export const correctDateTimeToSeconds = (datetime, withSeconds) => {
141
+ if (withSeconds) {
142
+ return `${datetime.substring(0, datetime.indexOf("Z"))}.000Z`;
143
+ }
144
+ return `${datetime.substring(0, datetime.lastIndexOf(":"))}:00.000Z`;
145
+ };
146
+
147
+ /**
148
+ * Return time value string off to seconds
149
+ *
150
+ * @param {string} datetime in ISO format
151
+ * @param {boolean} withSeconds to specify if seconds is needed or not
152
+ *
153
+ * @returns {string} just time after stripping of ms and seconds if selected to
154
+ */
155
+ export const timeCorrectedToSeconds = (datetime, withSeconds) => {
156
+ if (withSeconds) {
157
+ return datetime.substring(datetime.indexOf("T") + 1, datetime.indexOf("."));
158
+ }
159
+ return `${datetime.substring(
160
+ datetime.indexOf("T") + 1,
161
+ datetime.lastIndexOf(":")
162
+ )}:00`;
163
+ };
164
+
165
+ /**
166
+ * This function handles the cosmos blur handler of DateTime components
167
+ *
168
+ * @param {string | undefined} errorState for the selected datetime value
169
+ * @param {string} actualValue present in redux
170
+ * @param {string} formattedValue retrieved by trimming ISO to just Date/Time, also applying timezone if DateTime
171
+ * @param {object} actions object which has fire and blur callbacks
172
+ * @param {string} propName name of the property bound
173
+ * @param {object} pConn component's PConnect object which is useful to invoke validationApi
174
+ *
175
+ * @returns {void}
176
+ */
177
+ export const datetimeFireChangeBlurEvents = (
178
+ errorState,
179
+ actualValue,
180
+ formattedValue,
181
+ actions,
182
+ propName,
183
+ pConn
184
+ ) => {
185
+
186
+ // TODO - clean up, we should not rely on timestamp from cosmos to check InComplete validation
187
+ // above triggerFieldChange should have validated this
188
+ if (errorState) {
189
+ pConn.getValidationApi().validate(errorState);
190
+ }
191
+ // BUG-640834 In errorState presist old values avoiding store update & re-render.
192
+ else{
193
+ if (formattedValue !== actualValue) {
194
+ actions.updateFieldValue(propName, formattedValue);
195
+ }
196
+ actions.triggerFieldChange(propName, formattedValue);
197
+ }
198
+ };
199
+
200
+ /**
201
+ * Return Date format for the locale passed
202
+ *
203
+ * @param {string} locale locale string
204
+ * @param {object} options options for format string
205
+ * @returns {string} dateformat for the locale
206
+ * Example : getDateFormat("pl-PL") returns "DD.MM.YYYY"
207
+ */
208
+ export const getDateFormat = (locale, options) => {
209
+ return new Intl.DateTimeFormat(locale, options)
210
+ .formatToParts()
211
+ .map(({ type, value }) => {
212
+ switch (type) {
213
+ case "day":
214
+ return "DD";
215
+ case "month":
216
+ return "MM";
217
+ case "year":
218
+ return "YYYY";
219
+ case "hour":
220
+ return "hh";
221
+ case "minute":
222
+ return "mm";
223
+ case "second":
224
+ return "ss";
225
+ case "dayPeriod":
226
+ return "A";
227
+ case "literal":
228
+ return value;
229
+ default:
230
+ return "";
231
+ }
232
+ })
233
+ .join("");
234
+ };
235
+
236
+ /**
237
+ * Return boolean for the locale passed to specify if locale uses 12 hour format
238
+ *
239
+ * @param {string} locale locale string
240
+ * @returns {boolean} True or False for the locale
241
+ * Example : getDateFormat("pl-PL") returns false
242
+ */
243
+ export const is12HClockFormat = (locale) => {
244
+ const meridiem = new Intl.DateTimeFormat(locale, {
245
+ hour: "numeric"
246
+ })
247
+ .formatToParts()
248
+ .find(({ type }) => type === "dayPeriod");
249
+ return !!(meridiem === null || meridiem === undefined
250
+ ? undefined
251
+ : meridiem.value);
252
+ };
253
+
254
+ /**
255
+ * Return Option object for Time formatting
256
+ *
257
+ * @param {boolean} withSeconds true or false depending on seconds to be included
258
+ * @param {boolean} is12h 12 hour format
259
+ * @returns {object} options object time formatting
260
+ * Example : getTimeOptions(false, true) returns {hour: 'numeric',minute: 'numeric',hour12: true}
261
+ */
262
+ export const getTimeOptions = (withSeconds, is12h = false) => {
263
+ return {
264
+ hour: "numeric",
265
+ minute: "numeric",
266
+ ...(withSeconds && { second: "numeric" }),
267
+ hour12: is12h
268
+ };
269
+ };
270
+
271
+ /**
272
+ * Return Option object for Datetime formatting
273
+ *
274
+ * @param {boolean} withSeconds true or false depending on seconds to be included
275
+ * @param {boolean} is12h 12 hour format
276
+ * @returns {object} options object datetime formatting
277
+ * Example : getDateTimeOptions(false, true) returns {year: 'numeric',month: 'numeric',day: 'numeric',hour: 'numeric',minute: 'numeric',hour12: true}
278
+ */
279
+ export const getDateTimeOptions = (withSeconds, is12h = false) => {
280
+ return {
281
+ year: "numeric",
282
+ month: "numeric",
283
+ day: "numeric",
284
+ ...getTimeOptions(withSeconds, is12h)
285
+ };
286
+ };
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="100px" height="70px" viewBox="0 0 100 70" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>1 col </title>
4
+ <g id="Page-Config" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="Page-layouts" transform="translate(-692.000000, -84.000000)">
6
+ <g id="1-col-" transform="translate(692.000000, 84.000000)">
7
+ <rect id="bg" stroke="#A5A8BC" stroke-width="0.5" fill="#E7E9EB" x="0.25" y="0.25" width="99.5" height="69.5"></rect>
8
+ <g id="white" transform="translate(3.000000, 3.000000)" fill="#FFFFFF">
9
+ <rect id="Rectangle" x="0" y="0" width="94" height="66.5"></rect>
10
+ </g>
11
+ <g id="gray" transform="translate(6.000000, 6.000000)" fill="#8084A7">
12
+ <rect id="Rectangle" x="0" y="-2.84217094e-14" width="88" height="63.8"></rect>
13
+ </g>
14
+ <g id="labels" transform="translate(44.000000, 17.000000)" fill="#FFFFFF" font-family="OpenSans-Semibold, Open Sans" font-size="11" font-weight="500">
15
+ <text id="A">
16
+ <tspan x="0.75" y="12">A</tspan>
17
+ </text>
18
+ </g>
19
+ </g>
20
+ </g>
21
+ </g>
22
+ </svg>
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "{{COMPONENT_KEY}}",
3
+ "label": "{{COMPONENT_LABEL}}",
4
+ "description": "{{DESCRIPTION}}",
5
+ "organization": "{{ORGANIZATION}}",
6
+ "version": "{{VERSION}}",
7
+ "library": "{{LIBRARY}}",
8
+ "allowedApplications": {{{ALLOWEDAPPS}}},
9
+ "componentKey": "{{COMPONENT_KEY}}",
10
+ "type": "{{TYPE}}",
11
+ "subtype": {{{SUB_TYPE}}},
12
+ "icon": "OneColumnDetails.svg",
13
+ "properties": [
14
+ {
15
+ "name": "showHighlightedData",
16
+ "label": "Enable highlighted fields",
17
+ "format": "BOOLEAN"
18
+ },
19
+ {
20
+ "name": "highlightedData",
21
+ "label": "Highlighted fields",
22
+ "format": "CONTENTPICKER",
23
+ "addTypeList": ["Fields"],
24
+ "visibility": "$this.showHighlightedData = true",
25
+ "saveToConfig": true
26
+ },
27
+ {
28
+ "name": "A",
29
+ "label": "Region A",
30
+ "format": "CONTENTPICKER",
31
+ "addTypeList": ["Fields", "Views"],
32
+ "allowCreatingGroup": true
33
+ }
34
+ ]
35
+ }
@@ -0,0 +1,88 @@
1
+ import { Fragment } from 'react';
2
+ import { Grid, Flex, FieldGroup } from '@pega/cosmos-react-core';
3
+ import PropTypes from 'prop-types';
4
+
5
+ import Styled{{COMPONENT_CLASS_NAME}}Wrapper from './styles';
6
+
7
+ // includes in bundle
8
+ import { getAllFields } from './utils';
9
+
10
+ // Duplicated runtime code from Constellation Design System Component
11
+
12
+ // props passed in combination of props from property panel (config.json) and run time props from Constellation
13
+ // any default values in config.pros should be set in defaultProps at bottom of this file
14
+ export default function {{COMPONENT_CLASS_NAME}}(props) {
15
+
16
+ const { getPConnect, children, label, showLabel, showHighlightedData } = props;
17
+ const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
18
+
19
+ const numRegions = getAllFields(getPConnect)?.length;
20
+ const gridRepeat = 'repeat(' + numRegions + ', 1fr)';
21
+ let gridContainer = {};
22
+ gridContainer.cols = gridRepeat;
23
+ gridContainer.alignItems = 'start';
24
+ gridContainer.colGap = 1;
25
+
26
+ let gridHighlightContainer = {};
27
+ gridHighlightContainer.cols = gridRepeat;
28
+ gridHighlightContainer.alignItems = 'start';
29
+ gridHighlightContainer.gap = 2;
30
+ gridHighlightContainer.pad = [0, 0, 2, 0];
31
+
32
+ // Set up highlighted data to pass in return if is set to show, need raw metadata to pass to createComponent
33
+ let highlightedDataArr = [];
34
+ if (showHighlightedData) {
35
+ const { highlightedData = [] } = getPConnect().getRawMetadata().config;
36
+ highlightedDataArr = highlightedData.map((field) => {
37
+ field.config.displayMode = 'STACKED_LARGE_VAL';
38
+
39
+ // Mark as status display when using pyStatusWork
40
+ if (field.config.value === '@P .pyStatusWork') {
41
+ field.type = 'TextInput';
42
+ field.config.displayAsStatus = true;
43
+ }
44
+
45
+ return getPConnect().createComponent(field);
46
+ });
47
+ }
48
+
49
+ return (
50
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
51
+ {{! pick new delimiteres for mustache }}
52
+ {{=<% %>=}}
53
+ <FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
54
+ {showHighlightedData && highlightedDataArr.length > 0 && (
55
+ <Grid container={gridHighlightContainer}
56
+ data-testid={`highlighted-column-count-${numRegions}`}>
57
+ {highlightedDataArr.map((child, i) => (
58
+ <Fragment key={`hf-${i + 1}`}>{child}</Fragment>
59
+ ))}
60
+ </Grid>
61
+ )}
62
+ <Grid container={gridContainer} data-testid={`column-count-${numRegions}`} >
63
+ {children.map((child, i) => (
64
+ <Flex container={{ direction: 'column'}} key={`r-${i + 1}`}>
65
+ {child}
66
+ </Flex>
67
+ ))}
68
+ </Grid>
69
+ </FieldGroup>
70
+ <%={{ }}=%> {{! revert delimiteres for mustache }}
71
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
72
+ );
73
+
74
+ }
75
+
76
+ {{COMPONENT_CLASS_NAME}}.defaultProps = {
77
+ label: undefined,
78
+ showLabel: true,
79
+ showHighlightedData: false
80
+ };
81
+
82
+
83
+ {{COMPONENT_CLASS_NAME}}.propTypes = {
84
+ showLabel: PropTypes.bool,
85
+ label: PropTypes.string,
86
+ getPConnect: PropTypes.func.isRequired,
87
+ showHighlightedData: PropTypes.bool
88
+ };
@@ -0,0 +1,7 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ export default styled.div(() => {
4
+ return css`
5
+ margin: 8px 0;
6
+ `;
7
+ });
@@ -0,0 +1,155 @@
1
+ import { useContext, createContext } from 'react';
2
+ import { connect, Provider, shallowEqual } from 'react-redux';
3
+ import { createUID } from '@pega/cosmos-react-core';
4
+
5
+
6
+
7
+ /**
8
+ * Given the PConnect object of a Template component, retrieve the children
9
+ * metadata of all regions.
10
+ * @param {Function} pConnect PConnect of a Template component.
11
+ */
12
+ export function getAllFields(pConnect) {
13
+ const metadata = pConnect().getRawMetadata();
14
+ if (!metadata.children) {
15
+ return [];
16
+ }
17
+
18
+ let allFields = [];
19
+
20
+ const makeField = (f) => ({
21
+ ...pConnect().resolveConfigProps(f.config),
22
+ type: f.type
23
+ });
24
+
25
+ const hasRegions = !!metadata.children[0]?.children;
26
+ if (hasRegions) {
27
+ allFields = metadata.children.map((region) =>
28
+ region.children.map((field) => {
29
+ // Do not resolve the config props if is status work, instead create component here as status badge and mark as status display
30
+ if (field.config?.value === '@P .pyStatusWork') {
31
+ field.type = 'TextInput';
32
+ field.config.displayAsStatus = true;
33
+ return pConnect().createComponent(field);
34
+ }
35
+
36
+ return makeField(field);
37
+ })
38
+ );
39
+ } else {
40
+ allFields = metadata.children.map(makeField);
41
+ }
42
+
43
+ return allFields;
44
+ }
45
+
46
+
47
+
48
+ export function getFilteredFields(getPConnect) {
49
+ let primaryFieldsRaw;
50
+ let secondaryFieldsRaw;
51
+ const metadata = getPConnect().getRawMetadata();
52
+ const hasRegions = !!metadata.children[0]?.children;
53
+ if (hasRegions) {
54
+ primaryFieldsRaw = metadata.children[0].children;
55
+ secondaryFieldsRaw = metadata.children[1].children;
56
+ } else {
57
+ [primaryFieldsRaw, secondaryFieldsRaw] = metadata.children;
58
+ }
59
+
60
+ // Filter out fields that are not visible and unsupported types for primary fields (for CaseSummary)
61
+ primaryFieldsRaw = primaryFieldsRaw.filter((item) => {
62
+ const resolvedItem = getPConnect().resolveConfigProps(item.config);
63
+ return resolvedItem.visibility !== false && item.type !== 'TextContent';
64
+ });
65
+
66
+ secondaryFieldsRaw = secondaryFieldsRaw.filter((item) => {
67
+ const resolvedItem = getPConnect().resolveConfigProps(item.config);
68
+ return resolvedItem.visibility !== false && item.type !== 'TextContent';
69
+ });
70
+
71
+ return [primaryFieldsRaw, secondaryFieldsRaw];
72
+ }
73
+
74
+ /**
75
+ * Returns ConfigurableLayout mapped content. With pre-populated default layout configs.
76
+ * @param {object[]} regionData template children item.
77
+ * @returns {object[]} ConfigurableLayout content.
78
+ */
79
+ export function getLayoutDataFromRegion(regionData) {
80
+ const defaultLayoutConfig = {
81
+ width: 'full',
82
+ fillAvailable: true,
83
+ minWidth: [300, 'px']
84
+ };
85
+
86
+ return regionData.props
87
+ ?.getPConnect()
88
+ ?.getChildren()
89
+ ?.map((item, index) => {
90
+ const itemPConnect = item?.getPConnect();
91
+
92
+ return {
93
+ id: itemPConnect?.getComponentName() ? `${itemPConnect.getComponentName()}--${index}` : `item--${index}`,
94
+ content: itemPConnect?.getComponent(),
95
+ layoutConfig: {
96
+ ...defaultLayoutConfig,
97
+ ...itemPConnect?.getConfigProps().layoutConfig
98
+ }
99
+ };
100
+ });
101
+ }
102
+
103
+ /**
104
+ * Determine if the current view is the view of the case step/assignment.
105
+ * @param {Function} pConnect PConnect object for the component
106
+ */
107
+ export function getIsAssignmentView(pConnect) {
108
+ // Get caseInfo content from the store which contains the view info about the current assignment/step
109
+ // TODO To be replaced with pConnect.getCaseInfo().getCurrentAssignmentView when it's available
110
+ const assignmentViewClass = pConnect.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_CLASSID);
111
+ const assignmentViewName = pConnect.getValue(PCore.getConstants().CASE_INFO.ASSIGNMENTACTION_ID);
112
+
113
+ const assignmentViewId = `${assignmentViewName}!${assignmentViewClass}`;
114
+
115
+ // Get the info about the current view from pConnect
116
+ const currentViewId = `${pConnect.getCurrentView()}!${pConnect.getCurrentClassID()}`;
117
+
118
+ return assignmentViewId === currentViewId;
119
+ }
120
+
121
+ /**
122
+ * A hook that gets the instructions content for a view.
123
+ * @param {Function} pConnect PConnect object for the component
124
+ * @param {string} [instructions="casestep"] 'casestep', 'none', or the html content of a Rule-UI-Paragraph rule (processed via core's paragraph annotation handler)
125
+ */
126
+ export function getInstructions(pConnect, instructions = 'casestep') {
127
+ const caseStepInstructions = pConnect.getValue(PCore.getConstants().CASE_INFO.INSTRUCTIONS);
128
+
129
+ // Determine if this view is the current assignment/step view
130
+ const isCurrentAssignmentView = getIsAssignmentView(pConnect);
131
+
132
+ // Case step instructions
133
+ if (instructions === 'casestep' && isCurrentAssignmentView && caseStepInstructions?.length) {
134
+ return caseStepInstructions;
135
+ }
136
+
137
+ // No instructions
138
+ if (instructions === 'none') {
139
+ return undefined;
140
+ }
141
+
142
+ // If the annotation wasn't processed correctly, don't return any instruction text
143
+ if (instructions?.startsWith('@PARAGRAPH')) {
144
+ console.error('@PARAGRAPH annotation was not processed. Hiding custom instructions.');
145
+ return undefined;
146
+ }
147
+
148
+ // Custom instructions from the view
149
+ // The raw metadata for `instructions` will be something like '@PARAGRAPH .SomeParagraphRule' but
150
+ // it is evaluated by core logic to the content
151
+ if (instructions !== 'casestep' && instructions !== 'none') {
152
+ return instructions;
153
+ }
154
+ return undefined;
155
+ }
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="100px" height="70px" viewBox="0 0 100 70" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>2 col </title>
4
+ <g id="Page-Config" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="Page-layouts" transform="translate(-847.000000, -84.000000)">
6
+ <g id="2-col-" transform="translate(847.000000, 84.000000)">
7
+ <rect id="bg" stroke="#A5A8BC" stroke-width="0.5" fill="#E7E9EB" x="0.25" y="0.25" width="99.5" height="69.5"></rect>
8
+ <g id="white" transform="translate(3.000000, 3.000000)" fill="#FFFFFF">
9
+ <rect id="Rectangle" x="0" y="0" width="94" height="66.5"></rect>
10
+ </g>
11
+ <g id="gray-copy-2" transform="translate(6.000000, 6.000000)" fill="#8084A7">
12
+ <rect id="Rectangle" x="0" y="-2.84217094e-14" width="42" height="63.8"></rect>
13
+ <rect id="Rectangle" x="46" y="-2.84217094e-14" width="42" height="63.8"></rect>
14
+ </g>
15
+ <g id="labels-copy" transform="translate(22.000000, 17.000000)" fill="#FFFFFF" font-family="OpenSans-Semibold, Open Sans" font-size="11" font-weight="500">
16
+ <text id="B">
17
+ <tspan x="45.75" y="12">B</tspan>
18
+ </text>
19
+ <g id="labels">
20
+ <text id="A">
21
+ <tspan x="0.75" y="12">A</tspan>
22
+ </text>
23
+ </g>
24
+ </g>
25
+ </g>
26
+ </g>
27
+ </g>
28
+ </svg>
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "{{COMPONENT_KEY}}",
3
+ "label": "{{COMPONENT_LABEL}}",
4
+ "description": "{{DESCRIPTION}}",
5
+ "organization": "{{ORGANIZATION}}",
6
+ "version": "{{VERSION}}",
7
+ "library": "{{LIBRARY}}",
8
+ "allowedApplications": {{{ALLOWEDAPPS}}},
9
+ "componentKey": "{{COMPONENT_KEY}}",
10
+ "type": "{{TYPE}}",
11
+ "subtype": {{{SUB_TYPE}}},
12
+ "icon": "TwoColumnDetails.svg",
13
+ "properties": [
14
+ {
15
+ "name": "showHighlightedData",
16
+ "label": "Enable highlighted fields",
17
+ "format": "BOOLEAN"
18
+ },
19
+ {
20
+ "name": "highlightedData",
21
+ "label": "Highlighted fields",
22
+ "format": "CONTENTPICKER",
23
+ "addTypeList": ["Fields"],
24
+ "visibility": "$this.showHighlightedData = true",
25
+ "saveToConfig": true
26
+ },
27
+ {
28
+ "name": "A",
29
+ "label": "Region A",
30
+ "format": "CONTENTPICKER",
31
+ "addTypeList": ["Fields", "Views"],
32
+ "allowCreatingGroup": true
33
+ },
34
+ {
35
+ "name": "B",
36
+ "label": "Region B",
37
+ "format": "CONTENTPICKER",
38
+ "addTypeList": ["Fields", "Views"],
39
+ "allowCreatingGroup": true
40
+ }
41
+ ]
42
+ }