@pega/custom-dx-components 0.0.1 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/.vscode/extensions.json +1 -1
  2. package/README.md +6 -189
  3. package/package.json +34 -32
  4. package/src/auth.js +608 -0
  5. package/src/cli.js +42 -0
  6. package/src/constants.js +122 -8
  7. package/src/tasks/authenticate/helper.js +91 -8
  8. package/src/tasks/authenticate/index.js +169 -49
  9. package/src/tasks/build/helper.js +122 -0
  10. package/src/tasks/build/index.js +54 -0
  11. package/src/tasks/build-all/helper.js +70 -0
  12. package/src/tasks/build-all/index.js +79 -0
  13. package/src/tasks/{publish/bundle → bundle}/builder/index.js +49 -5
  14. package/src/tasks/{publish/bundle → bundle}/builder/webpack.config.js +5 -3
  15. package/src/tasks/{publish/bundle → bundle}/index.js +2 -2
  16. package/src/tasks/create/index.js +87 -64
  17. package/src/tasks/create/templates/Constellation/Field/Boolean/Boolean.js.mustache +38 -0
  18. package/src/tasks/create/templates/Constellation/Field/Boolean/boolean-format.js.mustache +26 -0
  19. package/src/tasks/create/templates/Constellation/Field/Boolean/config.json.mustache +145 -0
  20. package/src/tasks/create/templates/Constellation/Field/Boolean/demo.stories.jsx.mustache +61 -0
  21. package/src/tasks/create/templates/Constellation/Field/Boolean/event-utils.js.mustache +18 -0
  22. package/src/tasks/create/templates/Constellation/Field/Boolean/index.jsx.mustache +170 -0
  23. package/src/tasks/create/templates/Constellation/Field/Boolean/mock.stories.js.mustache +21 -0
  24. package/src/tasks/create/templates/Constellation/Field/Boolean/styles.js.mustache +7 -0
  25. package/src/tasks/create/templates/Constellation/Field/Date/DateFormatter.js.mustache +61 -0
  26. package/src/tasks/create/templates/Constellation/Field/Date/FormattedText.jsx.mustache +41 -0
  27. package/src/tasks/create/templates/Constellation/Field/Date/config.json.mustache +195 -0
  28. package/src/tasks/create/templates/Constellation/Field/Date/date.js.mustache +439 -0
  29. package/src/tasks/create/templates/Constellation/Field/Date/demo.stories.jsx.mustache +73 -0
  30. package/src/tasks/create/templates/Constellation/Field/Date/index.jsx.mustache +256 -0
  31. package/src/tasks/create/templates/Constellation/Field/Date/mock.stories.js.mustache +23 -0
  32. package/src/tasks/create/templates/Constellation/Field/Date/styles.js.mustache +7 -0
  33. package/src/tasks/create/templates/Constellation/Field/Date/suggestions-handler.js +10 -0
  34. package/src/tasks/create/templates/Constellation/Field/DateTime/config.json.mustache +256 -0
  35. package/src/tasks/create/templates/Constellation/Field/DateTime/date-time.js.mustache +92 -0
  36. package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.js.mustache +287 -0
  37. package/src/tasks/create/templates/Constellation/Field/DateTime/date.js.mustache +328 -0
  38. package/src/tasks/create/templates/Constellation/Field/DateTime/demo.stories.jsx.mustache +73 -0
  39. package/src/tasks/create/templates/Constellation/Field/DateTime/index.jsx.mustache +254 -0
  40. package/src/tasks/create/templates/Constellation/Field/DateTime/mock.stories.js.mustache +23 -0
  41. package/src/tasks/create/templates/Constellation/Field/DateTime/styles.js.mustache +7 -0
  42. package/src/tasks/create/templates/Constellation/Field/DateTime/suggestions-handler.js +10 -0
  43. package/src/tasks/create/templates/Constellation/Field/Decimal/config.json.mustache +278 -0
  44. package/src/tasks/create/templates/Constellation/Field/Decimal/demo.stories.jsx.mustache +49 -0
  45. package/src/tasks/create/templates/Constellation/Field/Decimal/event-utils.js.mustache +18 -0
  46. package/src/tasks/create/templates/Constellation/Field/Decimal/index.jsx.mustache +273 -0
  47. package/src/tasks/create/templates/Constellation/Field/Decimal/mock.stories.js.mustache +21 -0
  48. package/src/tasks/create/templates/Constellation/Field/Decimal/styles.js.mustache +7 -0
  49. package/src/tasks/create/templates/Constellation/Field/Decimal/suggestions-handler.js +10 -0
  50. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/config.json.mustache +291 -0
  51. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/demo.stories.jsx.mustache +53 -0
  52. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/event-utils.js.mustache +18 -0
  53. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/index.jsx.mustache +299 -0
  54. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/mock.stories.js.mustache +23 -0
  55. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/styles.js.mustache +7 -0
  56. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/suggestions-handler.js +10 -0
  57. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/config.json.mustache +93 -0
  58. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/demo.stories.jsx.mustache +49 -0
  59. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/event-utils.js.mustache +18 -0
  60. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/index.jsx.mustache +281 -0
  61. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/mock.stories.js.mustache +21 -0
  62. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/styles.js.mustache +7 -0
  63. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/suggestions-handler.js +10 -0
  64. package/src/tasks/create/templates/Constellation/Field/Integer/config.json.mustache +347 -0
  65. package/src/tasks/create/templates/Constellation/Field/Integer/demo.stories.jsx.mustache +49 -0
  66. package/src/tasks/create/templates/Constellation/Field/Integer/event-utils.js.mustache +18 -0
  67. package/src/tasks/create/templates/Constellation/Field/Integer/index.jsx.mustache +336 -0
  68. package/src/tasks/create/templates/Constellation/Field/Integer/mock.stories.js.mustache +21 -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 +78 -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 +351 -0
  75. package/src/tasks/create/templates/Constellation/Field/Picklist/mock.stories.js.mustache +67 -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/{template → templates/Constellation/Field/Text}/config.json.mustache +14 -5
  79. package/src/tasks/create/templates/Constellation/Field/Text/demo.stories.jsx.mustache +51 -0
  80. package/src/tasks/create/{template → templates/Constellation/Field/Text}/index.jsx.mustache +5 -0
  81. package/src/tasks/create/templates/Constellation/Field/Text/mock.stories.js.mustache +13 -0
  82. package/src/tasks/create/templates/Constellation/Field/Text/styles.js.mustache +7 -0
  83. package/src/tasks/create/templates/Constellation/Field/Text-Email/config.json.mustache +111 -0
  84. package/src/tasks/create/templates/Constellation/Field/Text-Email/demo.stories.jsx.mustache +48 -0
  85. package/src/tasks/create/templates/Constellation/Field/Text-Email/event-utils.js.mustache +18 -0
  86. package/src/tasks/create/templates/Constellation/Field/Text-Email/index.jsx.mustache +231 -0
  87. package/src/tasks/create/templates/Constellation/Field/Text-Email/mock.stories.js.mustache +22 -0
  88. package/src/tasks/create/templates/Constellation/Field/Text-Email/styles.js.mustache +7 -0
  89. package/src/tasks/create/templates/Constellation/Field/Text-Email/suggestions-handler.js +10 -0
  90. package/src/tasks/create/templates/Constellation/Field/Text-Input/StatusWork.jsx +26 -0
  91. package/src/tasks/create/templates/Constellation/Field/Text-Input/config.json.mustache +111 -0
  92. package/src/tasks/create/templates/Constellation/Field/Text-Input/demo.stories.jsx.mustache +48 -0
  93. package/src/tasks/create/templates/Constellation/Field/Text-Input/event-utils.js.mustache +18 -0
  94. package/src/tasks/create/templates/Constellation/Field/Text-Input/index.jsx.mustache +239 -0
  95. package/src/tasks/create/templates/Constellation/Field/Text-Input/mock.stories.js.mustache +21 -0
  96. package/src/tasks/create/templates/Constellation/Field/Text-Input/styles.js.mustache +7 -0
  97. package/src/tasks/create/templates/Constellation/Field/Text-Input/suggestions-handler.js +10 -0
  98. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/config.json.mustache +111 -0
  99. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/demo.stories.jsx.mustache +48 -0
  100. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/event-utils.js.mustache +18 -0
  101. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/index.jsx.mustache +231 -0
  102. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/mock.stories.js.mustache +20 -0
  103. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/styles.js.mustache +7 -0
  104. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/suggestions-handler.js +10 -0
  105. package/src/tasks/create/templates/Constellation/Field/Text-Phone/config.json.mustache +123 -0
  106. package/src/tasks/create/templates/Constellation/Field/Text-Phone/demo.stories.jsx.mustache +46 -0
  107. package/src/tasks/create/templates/Constellation/Field/Text-Phone/event-utils.js.mustache +18 -0
  108. package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.jsx.mustache +267 -0
  109. package/src/tasks/create/templates/Constellation/Field/Text-Phone/mock.stories.js.mustache +37 -0
  110. package/src/tasks/create/templates/Constellation/Field/Text-Phone/styles.js.mustache +7 -0
  111. package/src/tasks/create/templates/Constellation/Field/Text-Phone/suggestions-handler.js +10 -0
  112. package/src/tasks/create/templates/Constellation/Field/Text-URL/config.json.mustache +237 -0
  113. package/src/tasks/create/templates/Constellation/Field/Text-URL/demo.stories.jsx.mustache +46 -0
  114. package/src/tasks/create/templates/Constellation/Field/Text-URL/event-utils.js.mustache +18 -0
  115. package/src/tasks/create/templates/Constellation/Field/Text-URL/index.jsx.mustache +232 -0
  116. package/src/tasks/create/templates/Constellation/Field/Text-URL/mock.stories.js.mustache +22 -0
  117. package/src/tasks/create/templates/Constellation/Field/Text-URL/styles.js.mustache +7 -0
  118. package/src/tasks/create/templates/Constellation/Field/Text-URL/suggestions-handler.js +10 -0
  119. package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.jsx.mustache +173 -0
  120. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/config.json.mustache +185 -0
  121. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/demo.stories.jsx.mustache +57 -0
  122. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/index.jsx.mustache +213 -0
  123. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/mock.stories.js.mustache +20 -0
  124. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/styles.js.mustache +7 -0
  125. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/suggestions-handler.js +10 -0
  126. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/time-of-day.js.mustache +287 -0
  127. package/src/tasks/create/templates/Constellation/Template/DETAILS/OneColumnDetails.svg +22 -0
  128. package/src/tasks/create/templates/Constellation/Template/DETAILS/StatusWork.jsx.mustache +26 -0
  129. package/src/tasks/create/templates/Constellation/Template/DETAILS/config.json.mustache +35 -0
  130. package/src/tasks/create/templates/Constellation/Template/DETAILS/demo.stories.jsx.mustache +132 -0
  131. package/src/tasks/create/templates/Constellation/Template/DETAILS/index.jsx.mustache +86 -0
  132. package/src/tasks/create/templates/Constellation/Template/DETAILS/mock.stories.js.mustache +189 -0
  133. package/src/tasks/create/templates/Constellation/Template/DETAILS/styles.js.mustache +7 -0
  134. package/src/tasks/create/templates/Constellation/Template/DETAILS/utils.js.mustache +152 -0
  135. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/StatusWork.jsx.mustache +26 -0
  136. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/TwoColumnDetails.svg +28 -0
  137. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/config.json.mustache +42 -0
  138. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.jsx.mustache +136 -0
  139. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.jsx.mustache +86 -0
  140. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/mock.stories.js.mustache +230 -0
  141. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/styles.js.mustache +7 -0
  142. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/utils.js.mustache +155 -0
  143. package/src/tasks/create/templates/Constellation/Template/FORM/DefaultForm.svg +29 -0
  144. package/src/tasks/create/templates/Constellation/Template/FORM/config.json.mustache +45 -0
  145. package/src/tasks/create/templates/Constellation/Template/FORM/demo.stories.jsx.mustache +169 -0
  146. package/src/tasks/create/templates/Constellation/Template/FORM/index.jsx.mustache +45 -0
  147. package/src/tasks/create/templates/Constellation/Template/FORM/mock.stories.js.mustache +137 -0
  148. package/src/tasks/create/templates/Constellation/Template/FORM/styles.js.mustache +7 -0
  149. package/src/tasks/create/templates/Constellation/Template/FORM-region/TwoColumn.svg +38 -0
  150. package/src/tasks/create/templates/Constellation/Template/FORM-region/config.json.mustache +27 -0
  151. package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.jsx.mustache +178 -0
  152. package/src/tasks/create/templates/Constellation/Template/FORM-region/index.jsx.mustache +48 -0
  153. package/src/tasks/create/templates/Constellation/Template/FORM-region/mock.stories.js.mustache +143 -0
  154. package/src/tasks/create/templates/Constellation/Template/FORM-region/styles.js.mustache +7 -0
  155. package/src/tasks/create/templates/Constellation/Template/PAGE/GetNextWork.jsx.mustache +35 -0
  156. package/src/tasks/create/templates/Constellation/Template/PAGE/OneColumnPage.svg +36 -0
  157. package/src/tasks/create/templates/Constellation/Template/PAGE/config.json.mustache +32 -0
  158. package/src/tasks/create/templates/Constellation/Template/PAGE/demo.stories.jsx.mustache +102 -0
  159. package/src/tasks/create/templates/Constellation/Template/PAGE/index.jsx.mustache +70 -0
  160. package/src/tasks/create/templates/Constellation/Template/PAGE/localizations.json.mustache +4 -0
  161. package/src/tasks/create/templates/Constellation/Template/PAGE/mock.stories.js.mustache +94 -0
  162. package/src/tasks/create/templates/Constellation/Template/PAGE/styles.js.mustache +7 -0
  163. package/src/tasks/create/templates/Constellation/Template/PAGE/utils.js.mustache +229 -0
  164. package/src/tasks/create/templates/Constellation/Widget/CASE/OneColumnPage.svg +36 -0
  165. package/src/tasks/create/templates/Constellation/Widget/CASE/config.json.mustache +23 -0
  166. package/src/tasks/create/templates/Constellation/Widget/CASE/demo.stories.jsx.mustache +78 -0
  167. package/src/tasks/create/templates/Constellation/Widget/CASE/index.jsx.mustache +76 -0
  168. package/src/tasks/create/templates/Constellation/Widget/CASE/mock.stories.js.mustache +390 -0
  169. package/src/tasks/create/{template → templates/Constellation/Widget/CASE}/styles.js.mustache +1 -1
  170. package/src/tasks/create/templates/Constellation/Widget/PAGE/OneColumnPage.svg +36 -0
  171. package/src/tasks/create/templates/Constellation/Widget/PAGE/config.json.mustache +59 -0
  172. package/src/tasks/create/templates/Constellation/Widget/PAGE/demo.stories.jsx.mustache +30 -0
  173. package/src/tasks/create/templates/Constellation/Widget/PAGE/index.jsx.mustache +48 -0
  174. package/src/tasks/create/templates/Constellation/Widget/PAGE/mock.stories.js.mustache +23 -0
  175. package/src/tasks/create/templates/Constellation/Widget/PAGE/styles.js.mustache +7 -0
  176. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Avatar.jsx.mustache +75 -0
  177. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/OneColumnPage.svg +36 -0
  178. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Operator.jsx.mustache +240 -0
  179. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/config.json.mustache +66 -0
  180. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/demo.stories.jsx.mustache +68 -0
  181. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/index.jsx.mustache +110 -0
  182. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/mock.stories.js.mustache +51 -0
  183. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/styles.js.mustache +7 -0
  184. package/src/tasks/create-all/index.js +398 -0
  185. package/src/tasks/delete/helper.js +6 -4
  186. package/src/tasks/delete/index.js +4 -0
  187. package/src/tasks/delete-all/helper.js +153 -0
  188. package/src/tasks/delete-all/index.js +49 -0
  189. package/src/tasks/generate-ai/aiPrompt.txt.mustache +121 -0
  190. package/src/tasks/generate-ai/helper.js +184 -0
  191. package/src/tasks/generate-ai/index.js +33 -0
  192. package/src/tasks/index.js +7 -0
  193. package/src/tasks/init/index.js +9 -3
  194. package/src/tasks/init/template/.eslintignore +8 -0
  195. package/src/tasks/init/template/.eslintrc.json +186 -5
  196. package/src/tasks/init/template/.vscode/extensions.json +1 -1
  197. package/src/tasks/init/template/README.md +80 -61
  198. package/src/tasks/init/template/keys/DX-ComponentDev.zip +0 -0
  199. package/src/tasks/init/template/keys/dxcb.crt +32 -0
  200. package/src/tasks/init/template/keys/dxcb.key +51 -0
  201. package/src/tasks/init/template/package.json.mustache +44 -21
  202. package/src/tasks/init/template/tasks.config.json +19 -5
  203. package/src/tasks/init/template/templateNPMRC.txt +8 -0
  204. package/src/tasks/linter/index.js +46 -0
  205. package/src/tasks/list/helper.js +19 -6
  206. package/src/tasks/list/index.js +4 -0
  207. package/src/tasks/publish/helper.js +13 -4
  208. package/src/tasks/publish/index.js +14 -1
  209. package/src/tasks/publish-all/helper.js +154 -0
  210. package/src/tasks/publish-all/index.js +95 -0
  211. package/src/tasks/rename/index.js +314 -0
  212. package/src/tasks/validator/index.js +291 -18
  213. package/src/util.js +247 -6
  214. package/src/tasks/create/template/demo.stories.jsx.mustache +0 -44
  215. package/src/tasks/init/template/src/components/MBTAList/MBTAList.stories.tsx +0 -10
  216. package/src/tasks/init/template/src/components/MBTAList/MBTAList.tsx +0 -122
  217. package/src/tasks/init/template/src/components/MBTAList/icons/accessible.icon.tsx +0 -14
  218. package/src/tasks/init/template/src/components/MBTAList/icons/bus.icon.tsx +0 -13
  219. package/src/tasks/init/template/src/components/MBTAList/icons/mbta.icon.tsx +0 -10
  220. package/src/tasks/init/template/src/components/MBTAList/icons/subway.icon.tsx +0 -14
  221. package/src/tasks/init/template/src/components/MBTAList/index.ts +0 -2
  222. /package/src/tasks/{publish/bundle → bundle}/builder/modules.js +0 -0
  223. /package/src/tasks/{publish/bundle → bundle}/builder/paths.js +0 -0
@@ -14,7 +14,8 @@ import {
14
14
  getComponents,
15
15
  getComponentDefaults,
16
16
  sanitize,
17
- validateSemver
17
+ validateSemver,
18
+ showVersion
18
19
  } from '../../util.js';
19
20
  import { COMPONENT_SCHEMA } from '../../constants.js';
20
21
 
@@ -53,6 +54,16 @@ const compileMustacheTemplates = async (
53
54
  subtype = subtype.toString();
54
55
  }
55
56
 
57
+ let mustacheSubType = subtype;
58
+ if (typeof(mustacheSubType) == "string") {
59
+ if (mustacheSubType == "FORM-region") {
60
+ mustacheSubType = "FORM";
61
+ }
62
+ else if (mustacheSubType == "DETAILS-region") {
63
+ mustacheSubType = "DETAILS";
64
+ }
65
+ }
66
+
56
67
  if (allowedApplications.trim() === '') {
57
68
  allowedApplications = [];
58
69
  } else {
@@ -76,8 +87,8 @@ const compileMustacheTemplates = async (
76
87
  LIBRARY: library,
77
88
  ALLOWEDAPPS: JSON.stringify(allowedApplications),
78
89
  TYPE: type,
79
- SUB_TYPE: JSON.stringify(subtype),
80
- DESCRIPTION: description,
90
+ SUB_TYPE: JSON.stringify(mustacheSubType),
91
+ DESCRIPTION: description || componentLabel,
81
92
  IS_TEMPLATE: isTemplate,
82
93
  IS_PICKLIST: isPicklist,
83
94
  IS_BOOLEAN: isBool,
@@ -94,6 +105,7 @@ const validateCompile = async (
94
105
  componentLabel,
95
106
  library,
96
107
  version,
108
+ framework,
97
109
  type,
98
110
  subtype,
99
111
  description,
@@ -101,21 +113,23 @@ const validateCompile = async (
101
113
  },
102
114
  options
103
115
  ) => {
104
- const templateDirectory = fileURLToPath(new URL('./template', import.meta.url));
116
+
117
+ let sSubType = subtype;
118
+ if (Array.isArray(subtype)) {
119
+ sSubType = subtype.join("-");
120
+ }
121
+
122
+ // for now, until add question back in
123
+ if (framework == undefined || framework == "") {
124
+ framework = "Constellation";
125
+ }
126
+
127
+ const templateDir = `./templates/${framework}/${type}/${sSubType}`;
128
+ const templateDirectory = fileURLToPath(new URL(templateDir, import.meta.url));
105
129
 
106
130
  const { organization } = JSON.parse(fs.readFileSync(path.resolve('package.json'), 'utf8'));
107
131
 
108
132
  const componentKey = `${organization}_${library}_${componentName}`;
109
- /*
110
- if (!isPascalCase(componentKey)) {
111
- console.log(
112
- chalk.yellowBright(
113
- `${componentKey} is not in Pascal Case. Attempting to create component in Pascal Case !!`
114
- )
115
- );
116
- componentKey = convertIntoPascalCase(componentKey);
117
- } */
118
-
119
133
  const targetDirectory = await getComponentDirectoryPath(componentKey);
120
134
 
121
135
  const components = await getComponents();
@@ -146,20 +160,25 @@ const validateCompile = async (
146
160
  };
147
161
 
148
162
  export default async options => {
163
+ showVersion();
164
+
149
165
  if (options.params[9]) {
150
- const componentName = options.params[3];
151
- const componentLabel = options.params[4];
152
- const library = options.params[5];
153
- const version = options.params[6];
154
- const type = options.params[7];
155
- const subtype = options.params[8];
166
+
167
+ const type = options.params[3];
168
+ const subtype = options.params[4];
169
+ const componentName = options.params[5];
170
+ const componentLabel = options.params[6];
171
+ const library = options.params[7];
172
+ const version = options.params[9];
156
173
  const description = options.params[9];
174
+
157
175
  await validateCompile(
158
176
  {
159
177
  componentName,
160
178
  componentLabel,
161
179
  library,
162
180
  version,
181
+ framework,
163
182
  type,
164
183
  subtype,
165
184
  description
@@ -169,6 +188,50 @@ export default async options => {
169
188
  } else {
170
189
  const componentDefaults = await getComponentDefaults();
171
190
  const questions = [
191
+ {
192
+ name: 'type',
193
+ type: 'rawlist',
194
+ message: 'Enter type of component',
195
+ default: componentDefaults.type,
196
+ choices: COMPONENT_SCHEMA.type
197
+ },
198
+ {
199
+ name: 'subtype',
200
+ type: 'rawlist',
201
+ message: 'Enter subtype of component',
202
+ default: componentDefaults.subtype,
203
+ choices: COMPONENT_SCHEMA.subtype.field,
204
+ when(answers) {
205
+ return answers.type === 'Field';
206
+ }
207
+ },
208
+ {
209
+ name: 'subtype',
210
+ type: 'rawlist',
211
+ message: 'Enter subtype of component',
212
+ default: componentDefaults.subtype,
213
+ choices: COMPONENT_SCHEMA.subtype.template,
214
+ when(answers) {
215
+ return answers.type === 'Template';
216
+ }
217
+ },
218
+ {
219
+ name: 'subtype',
220
+ type: 'rawlist',
221
+ message: 'Enter subtype of component',
222
+ default: [componentDefaults.subtype || COMPONENT_SCHEMA.subtype.widget[0]],
223
+ choices: COMPONENT_SCHEMA.subtype.widget,
224
+ when(answers) {
225
+ return answers.type === 'Widget';
226
+ },
227
+ validate: value => {
228
+ /* value should not be empty */
229
+ if (Array.isArray(value) && value.length) {
230
+ return true;
231
+ }
232
+ return 'Please select subtype';
233
+ }
234
+ },
172
235
  {
173
236
  name: 'componentName',
174
237
  message: 'Enter component name (required)',
@@ -197,6 +260,7 @@ export default async options => {
197
260
  {
198
261
  name: 'version',
199
262
  message: 'Enter component version',
263
+ default: componentDefaults.version,
200
264
  validate: value => {
201
265
  if (validateSemver(value)) {
202
266
  return true;
@@ -225,62 +289,20 @@ export default async options => {
225
289
  message: 'Please enter the application names to be supported (comma-separated). ',
226
290
  suffix: 'Keep empty for all applications'
227
291
  },
228
- {
229
- name: 'type',
230
- type: 'rawlist',
231
- message: 'Enter type of component',
232
- default: componentDefaults.type,
233
- choices: COMPONENT_SCHEMA.type
234
- },
235
- {
236
- name: 'subtype',
237
- type: 'rawlist',
238
- message: 'Enter subtype of component',
239
- default: componentDefaults.subtype,
240
- choices: COMPONENT_SCHEMA.subtype.field,
241
- when(answers) {
242
- return answers.type === 'Field';
243
- }
244
- },
245
- {
246
- name: 'subtype',
247
- type: 'rawlist',
248
- message: 'Enter subtype of component',
249
- default: componentDefaults.subtype,
250
- choices: COMPONENT_SCHEMA.subtype.template,
251
- when(answers) {
252
- return answers.type === 'Template';
253
- }
254
- },
255
- {
256
- name: 'subtype',
257
- type: 'checkbox',
258
- message: 'Enter subtype of component',
259
- default: [componentDefaults.subtype || COMPONENT_SCHEMA.subtype.widget[0]],
260
- choices: COMPONENT_SCHEMA.subtype.widget,
261
- when(answers) {
262
- return answers.type === 'Widget';
263
- },
264
- validate: value => {
265
- /* value should not be empty */
266
- if (Array.isArray(value) && value.length) {
267
- return true;
268
- }
269
- return 'Please select subtype';
270
- }
271
- },
272
292
  {
273
293
  name: 'description',
274
294
  message: 'Enter description for the component',
275
295
  default: componentDefaults.description
276
296
  }
277
297
  ];
298
+
278
299
  await inquirer.prompt(questions).then(async answers => {
279
300
  const {
280
301
  componentName,
281
302
  componentLabel,
282
303
  library,
283
304
  version,
305
+ framework,
284
306
  type,
285
307
  subtype,
286
308
  description,
@@ -292,6 +314,7 @@ export default async options => {
292
314
  componentLabel,
293
315
  library,
294
316
  version,
317
+ framework,
295
318
  type,
296
319
  subtype,
297
320
  description,
@@ -0,0 +1,38 @@
1
+ function Boolean(value, { allowEmpty = true, tick = "", cross = "" } = {}) {
2
+ if (
3
+ (!allowEmpty && !value) ||
4
+ value === false ||
5
+ value?.toString()?.toLowerCase() === "false" ||
6
+ value === 0 ||
7
+ value === "0"
8
+ ) {
9
+ return cross || "";
10
+ }
11
+ if (
12
+ value === true ||
13
+ value?.toString()?.toLowerCase() === "true" ||
14
+ value === 1 ||
15
+ value === "1"
16
+ ) {
17
+ return tick || "";
18
+ }
19
+ if (
20
+ allowEmpty &&
21
+ (value === "null" ||
22
+ value === "" ||
23
+ value === null ||
24
+ typeof value === "undefined")
25
+ ) {
26
+ return "––";
27
+ }
28
+ return value;
29
+ }
30
+
31
+ export default {
32
+ TrueFalse: (value, options) =>
33
+ Boolean(value, {
34
+ ...options,
35
+ tick: "True",
36
+ cross: "False"
37
+ })
38
+ };
@@ -0,0 +1,26 @@
1
+ import Boolean from "./Boolean";
2
+
3
+
4
+ export default {
5
+ ...Boolean
6
+ };
7
+
8
+
9
+
10
+ export function format(value, type) {
11
+ let formattedValue;
12
+
13
+ switch (type?.toLowerCase()) {
14
+
15
+
16
+ case "boolean":
17
+ case "checkbox": {
18
+ formattedValue = Boolean.TrueFalse(value, { allowEmpty: false });
19
+ break;
20
+ }
21
+
22
+ default:
23
+ formattedValue = value;
24
+ }
25
+ return formattedValue;
26
+ }
@@ -0,0 +1,145 @@
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": "images/pz-checkbox-active.svg",
13
+ "properties": [
14
+ {
15
+ "name": "label",
16
+ "label": "Field label",
17
+ "format": "TEXT"
18
+ },
19
+ {
20
+ "name": "hideLabel",
21
+ "label": "Hide Label",
22
+ "format": "BOOLEAN"
23
+ },
24
+ {
25
+ "name": "readOnly",
26
+ "label": "Edit mode",
27
+ "format": "READONLY"
28
+ },
29
+ {
30
+ "label": "Column settings",
31
+ "format": "GROUP",
32
+ "visibility": "@VIEWTYPE == 'MultiRecordDisplayAsTable'",
33
+ "properties": [
34
+ {
35
+ "name": "columnWidth",
36
+ "label": "Column width",
37
+ "format": "SELECT",
38
+ "source": [
39
+ {
40
+ "key": "auto",
41
+ "value": "Auto"
42
+ },
43
+ {
44
+ "key": "custom",
45
+ "value": "Custom"
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ "name": "width",
51
+ "label": "Width (px)",
52
+ "format": "NUMBER",
53
+ "visibility": "$this.columnWidth == 'custom'"
54
+ }
55
+ ]
56
+ },
57
+ {
58
+ "label": "Input settings",
59
+ "format": "GROUP",
60
+ "visibility": "(!readOnly = true)",
61
+ "properties": [
62
+ {
63
+ "name": "caption",
64
+ "label": "Caption",
65
+ "format": "TEXT",
66
+ "useAsAuthoringLabel": true
67
+ },
68
+ {
69
+ "name": "helperText",
70
+ "label": "Helper text",
71
+ "format": "TEXT"
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "label": "Read-only settings",
77
+ "format": "GROUP",
78
+ "properties": [
79
+ {
80
+ "format": "SELECT",
81
+ "name": "displayValue",
82
+ "label": "Display Value",
83
+ "defaultValue": "Yes/No",
84
+ "localize": true,
85
+ "splitValues": {
86
+ "token": "/",
87
+ "propertyNames": ["trueLabel", "falseLabel"]
88
+ },
89
+ "source": [
90
+ {
91
+ "key": "Yes/No",
92
+ "value": "Yes/No"
93
+ },
94
+ {
95
+ "key": "True/False",
96
+ "value": "True/False"
97
+ }
98
+ ]
99
+ }
100
+ ]
101
+ },
102
+ {
103
+ "label": "Conditions",
104
+ "format": "GROUP",
105
+ "properties": [
106
+ {
107
+ "name": "required",
108
+ "label": "Required",
109
+ "format": "REQUIRED",
110
+ "visibility": "(!readOnly = true)"
111
+ },
112
+ {
113
+ "name": "disabled",
114
+ "label": "Disabled",
115
+ "format": "DISABLED",
116
+ "visibility": "(!readOnly = true)"
117
+ },
118
+ {
119
+ "name": "visibility",
120
+ "label": "Visibility",
121
+ "format": "VISIBILITY"
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ "label": "Advanced",
127
+ "format": "GROUP",
128
+ "collapsible": true,
129
+ "properties": [
130
+ {
131
+ "name": "testId",
132
+ "label": "Test ID",
133
+ "format": "TEXT",
134
+ "ignorePattern": "[^-_\\p{N}\\p{L}]",
135
+ "includeAnnotations": false
136
+ }
137
+ ]
138
+ }
139
+ ],
140
+ "defaultConfig": {
141
+ "caption": "@L $this.label",
142
+ "trueLabel": "@L Yes",
143
+ "falseLabel": "@L No"
144
+ }
145
+ }
@@ -0,0 +1,61 @@
1
+ import { useState } from 'react';
2
+ import { withKnobs } from '@storybook/addon-knobs';
3
+
4
+ import { configProps, stateProps } from './mock.stories';
5
+
6
+ import {{COMPONENT_CLASS_NAME}} from './index';
7
+
8
+ export default {
9
+ title: '{{COMPONENT_CLASS_NAME}}',
10
+ decorators: [withKnobs],
11
+ component: {{COMPONENT_CLASS_NAME}}
12
+ };
13
+
14
+ export const base{{COMPONENT_CLASS_NAME}} = () => {
15
+ // eslint-disable-next-line react-hooks/rules-of-hooks
16
+ const [value, setValue] = useState(configProps.value);
17
+
18
+ const props = {
19
+ value,
20
+ label: configProps.label,
21
+ helperText: configProps.helperText,
22
+ caption: configProps.caption,
23
+ validatemessage: configProps.validatemessage,
24
+ hideLabel: configProps.hideLabel,
25
+ testId: configProps.testId,
26
+ additionalProps: configProps.additionalProps,
27
+ displayMode: configProps.displayMode,
28
+ variant: configProps.variant,
29
+ trueLabel: configProps.trueLabel,
30
+ falseLabel: configProps.falseLabel,
31
+ disabled: configProps.disabled,
32
+ readOnly: configProps.readOnly,
33
+ required: configProps.required,
34
+ getPConnect: () => {
35
+ return {
36
+ getStateProps: () => {
37
+ return stateProps;
38
+ },
39
+ getActionsApi: () => {
40
+ return {
41
+ updateFieldValue: (propName, theValue) => {
42
+ setValue(theValue);
43
+ },
44
+ triggerFieldChange: () => { /* nothing */}
45
+ };
46
+ },
47
+ getValidationApi: () => {
48
+ return {
49
+ validate: () => { /* nothing */}
50
+ };
51
+ }
52
+ };
53
+ }
54
+ };
55
+
56
+ return (
57
+ <>
58
+ <{{COMPONENT_CLASS_NAME}} {...props} />
59
+ </>
60
+ );
61
+ };
@@ -0,0 +1,18 @@
1
+ const handleEvent = (actions, eventType, propName, value) => {
2
+ switch (eventType) {
3
+ case "change":
4
+ actions.updateFieldValue(propName, value);
5
+ break;
6
+ case "blur":
7
+ actions.triggerFieldChange(propName, value);
8
+ break;
9
+ case "changeNblur":
10
+ actions.updateFieldValue(propName, value);
11
+ actions.triggerFieldChange(propName, value);
12
+ break;
13
+ default:
14
+ break;
15
+ }
16
+ };
17
+
18
+ export default handleEvent;
@@ -0,0 +1,170 @@
1
+ import {
2
+ Checkbox as CosmosCheckbox,
3
+ CheckboxGroup,
4
+ FieldValueList,
5
+ Text
6
+ } from "@pega/cosmos-react-core";
7
+ import PropTypes from "prop-types";
8
+
9
+ // includes in bundle
10
+ import handleEvent from "./event-utils";
11
+
12
+ import Styled{{COMPONENT_CLASS_NAME}}Wrapper from './styles';
13
+
14
+ // Duplicated runtime code from Constellation Design System Component
15
+
16
+ // props passed in combination of props from property panel (config.json) and run time props from Constellation
17
+ // any default values in config.pros should be set in defaultProps at bottom of this file
18
+ const {{COMPONENT_CLASS_NAME}} = props => {
19
+ const {
20
+ getPConnect,
21
+ value,
22
+ label,
23
+ helperText,
24
+ caption,
25
+ validatemessage,
26
+ hideLabel,
27
+ testId,
28
+ additionalProps,
29
+ displayMode,
30
+ variant,
31
+ trueLabel,
32
+ falseLabel
33
+ } = props;
34
+ const pConn = getPConnect();
35
+ const actions = pConn.getActionsApi();
36
+ const propName = pConn.getStateProps().value;
37
+
38
+ let { readOnly, required, disabled } = props;
39
+ [readOnly, required, disabled] = [readOnly, required, disabled].map(
40
+ (prop) => prop === true || (typeof prop === 'string' && prop === 'true')
41
+ );
42
+
43
+ let status = "";
44
+ if (validatemessage !== "") {
45
+ status = "error";
46
+ }
47
+
48
+ const aCosmosCheckbox = (
49
+ <CosmosCheckbox
50
+ {...additionalProps}
51
+ className="standard"
52
+ checked={value}
53
+ label={caption}
54
+ disabled={disabled}
55
+ readOnly={readOnly}
56
+ required={required}
57
+ onClick={actions.onClick}
58
+ onChange={(event) => {
59
+ handleEvent(actions, "changeNblur", propName, event.target.checked);
60
+ }}
61
+ onBlur={(event) => {
62
+ pConn.getValidationApi().validate(event.target.checked);
63
+ }}
64
+ data-testid={testId}
65
+ />
66
+ );
67
+
68
+ const parentTestId = testId ? `${testId}-parent` : testId;
69
+
70
+ let displayComponent;
71
+ if (displayMode) {
72
+ displayComponent = <{{COMPONENT_CLASS_NAME}} value={value} trueLabel={trueLabel} falseLabel={falseLabel} />;
73
+ }
74
+
75
+ if (displayMode === 'DISPLAY_ONLY') {
76
+ return ( <Styled{{COMPONENT_CLASS_NAME}}Wrapper> displayComponent </Styled{{COMPONENT_CLASS_NAME}}Wrapper>);
77
+ }
78
+
79
+ if (displayMode === "LABELS_LEFT") {
80
+ return (
81
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
82
+ <FieldValueList
83
+ variant={hideLabel ? 'stacked' : variant}
84
+ data-testid={testId}
85
+ fields={[{ id: '1', name: hideLabel ? '' : caption, value: displayComponent }]}
86
+ />
87
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
88
+ );
89
+ }
90
+
91
+ if (displayMode === "STACKED_LARGE_VAL") {
92
+ return (
93
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
94
+ <FieldValueList
95
+ variant='stacked'
96
+ data-testid={testId}
97
+ fields={[
98
+ {
99
+ id: '2',
100
+ name: hideLabel ? '' : caption,
101
+ value: (
102
+ <Text variant='h1' as='span'>
103
+ {displayComponent}
104
+ </Text>
105
+ )
106
+ }
107
+ ]}
108
+ />
109
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
110
+ );
111
+ }
112
+
113
+
114
+ return (
115
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
116
+ <CheckboxGroup
117
+ label={label}
118
+ labelHidden={hideLabel}
119
+ data-testid={parentTestId}
120
+ info={validatemessage || helperText}
121
+ status={status}
122
+ >
123
+ {aCosmosCheckbox}
124
+ </CheckboxGroup>
125
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
126
+ );
127
+
128
+
129
+ };
130
+
131
+
132
+ {{COMPONENT_CLASS_NAME}}.defaultProps = {
133
+ validatemessage: '',
134
+ value: false,
135
+ label: '',
136
+ hideLabel: false,
137
+ helperText: '',
138
+ disabled: false,
139
+ readOnly: false,
140
+ required: false,
141
+ testId: null,
142
+ additionalProps: {},
143
+ displayMode: null,
144
+ variant: 'inline',
145
+ displayValue: 'Yes/No',
146
+ trueLabel: '',
147
+ falseLabel: ''
148
+ };
149
+
150
+ {{COMPONENT_CLASS_NAME}}.propTypes = {
151
+ getPConnect: PropTypes.func.isRequired,
152
+ validatemessage: PropTypes.string,
153
+ label: PropTypes.string,
154
+ hideLabel: PropTypes.bool,
155
+ helperText: PropTypes.string,
156
+ value: PropTypes.bool,
157
+ caption: PropTypes.string.isRequired,
158
+ disabled: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
159
+ readOnly: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
160
+ required: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
161
+ testId: PropTypes.string,
162
+ additionalProps: PropTypes.objectOf(PropTypes.any),
163
+ displayMode: PropTypes.string,
164
+ variant: PropTypes.string,
165
+ displayValue: PropTypes.string,
166
+ trueLabel: PropTypes.string,
167
+ falseLabel: PropTypes.string
168
+ };
169
+
170
+ export default {{COMPONENT_CLASS_NAME}};