@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
@@ -0,0 +1,281 @@
1
+ import { useState, useEffect, useRef } from 'react';
2
+ import {
3
+ NumberInput,
4
+ NumberDisplay,
5
+ CurrencyDisplay,
6
+ FieldValueList,
7
+ Text
8
+ } from '@pega/cosmos-react-core';
9
+ import PropTypes from 'prop-types';
10
+
11
+ // includes in bundle
12
+ import handleEvent from './event-utils';
13
+ import { suggestionsHandler } from './suggestions-handler';
14
+
15
+ import Styled{{COMPONENT_CLASS_NAME}}Wrapper from './styles';
16
+
17
+
18
+ // Duplicated runtime code from Constellation Design System Component
19
+
20
+ // props passed in combination of props from property panel (config.json) and run time props from Constellation
21
+ // any default values in config.pros should be set in defaultProps at bottom of this file
22
+ const {{COMPONENT_CLASS_NAME}} = props => {
23
+ const {
24
+ getPConnect,
25
+ value,
26
+ placeholder,
27
+ validatemessage,
28
+ label,
29
+ hideLabel,
30
+ helperText,
31
+ testId,
32
+ decimalPrecision,
33
+ additionalProps,
34
+ displayMode,
35
+ variant,
36
+ formatter,
37
+ isTableFormatter,
38
+ hasSuggestions
39
+ } = props;
40
+ let { showGroupSeparators } = props;
41
+ const pConn = getPConnect();
42
+ const actions = pConn.getActionsApi();
43
+ const propName = pConn.getStateProps().value;
44
+ const [percentageValue, setPercentageValue] = useState(value?.toString());
45
+ const hasValueChange = useRef(false);
46
+
47
+ let { readOnly, required, disabled } = props;
48
+ [readOnly, required, disabled] = [readOnly, required, disabled].map(
49
+ (prop) => prop === true || (typeof prop === 'string' && prop === 'true')
50
+ );
51
+
52
+ const [status, setStatus] = useState(hasSuggestions ? 'pending' : undefined);
53
+
54
+ useEffect(() => {
55
+ if (validatemessage !== '') {
56
+ setStatus('error');
57
+ }
58
+ if (hasSuggestions) {
59
+ setStatus('pending');
60
+ } else if (!hasSuggestions && status !== 'success') {
61
+ setStatus(validatemessage !== '' ? 'error' : undefined);
62
+ }
63
+ }, [validatemessage, hasSuggestions]);
64
+
65
+ let numberOfDecimals = parseInt(decimalPrecision, 10);
66
+ if (Number.isNaN(numberOfDecimals)) {
67
+ numberOfDecimals = decimalPrecision === '' ? undefined : 2;
68
+ }
69
+
70
+ useEffect(() => {
71
+ setPercentageValue(value?.toString());
72
+ }, [value]);
73
+
74
+ if (displayMode === 'LABELS_LEFT' || displayMode === 'DISPLAY_ONLY') {
75
+ let unit = 'percent';
76
+ let displayComp = null;
77
+
78
+ if (isTableFormatter) {
79
+ switch (formatter) {
80
+ case 'Integer': {
81
+ numberOfDecimals = 0;
82
+ showGroupSeparators = true;
83
+ unit = '';
84
+ break;
85
+ }
86
+ case 'Decimal': {
87
+ showGroupSeparators = true;
88
+ unit = '';
89
+ break;
90
+ }
91
+ case 'Decimal-Auto': {
92
+ numberOfDecimals = Number.isInteger(percentageValue) ? 0 : 2;
93
+ showGroupSeparators = true;
94
+ unit = '';
95
+ break;
96
+ }
97
+ default: {
98
+ showGroupSeparators = false;
99
+ break;
100
+ }
101
+ }
102
+ }
103
+
104
+ {{! pick new delimiteres for mustache }}
105
+ {{=<% %>=}}
106
+
107
+ displayComp = (
108
+ <NumberDisplay
109
+ value={percentageValue}
110
+ formattingOptions={{
111
+ fractionDigits: numberOfDecimals,
112
+ groupSeparators: showGroupSeparators
113
+ }}
114
+ unit={unit}
115
+ />
116
+ );
117
+ if (isTableFormatter && (formatter === 'Currency' || formatter === 'Currency-Code')) {
118
+ const { currencyISOCode } = props;
119
+ let showIsoCode = true;
120
+ if (formatter === 'Currency') {
121
+ showIsoCode = false;
122
+ }
123
+ displayComp = (
124
+ <CurrencyDisplay
125
+ value={percentageValue}
126
+ currencyISOCode={currencyISOCode}
127
+ formattingOptions={{
128
+ groupSeparators: showGroupSeparators,
129
+ currency: showIsoCode ? 'code' : 'symbol'
130
+ }}
131
+ />
132
+ );
133
+ }
134
+
135
+ <%={{ }}=%> {{! revert delimiteres for mustache }}
136
+
137
+ return displayMode === 'DISPLAY_ONLY' ? (
138
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
139
+ displayComp
140
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
141
+ ) : (
142
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
143
+ <FieldValueList
144
+ variant={hideLabel ? 'stacked' : variant}
145
+ data-testid={testId}
146
+ fields={[{ id: '1', name: hideLabel ? '' : label, value: displayComp }]}
147
+ />
148
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
149
+ );
150
+ }
151
+
152
+ {{! pick new delimiteres for mustache }}
153
+ {{=<% %>=}}
154
+
155
+ if (displayMode === 'STACKED_LARGE_VAL') {
156
+ const displayComp = (
157
+ <NumberDisplay
158
+ value={percentageValue}
159
+ formattingOptions={{
160
+ fractionDigits: numberOfDecimals,
161
+ groupSeparators: showGroupSeparators
162
+ }}
163
+ unit='percent'
164
+ />
165
+ );
166
+
167
+ <%={{ }}=%> {{! revert delimiteres for mustache }}
168
+
169
+ return (
170
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
171
+ <FieldValueList
172
+ variant='stacked'
173
+ data-testid={testId}
174
+ fields={[
175
+ {
176
+ id: '2',
177
+ name: hideLabel ? '' : label,
178
+ value: (
179
+ <Text variant='h1' as='span'>
180
+ {displayComp}
181
+ </Text>
182
+ )
183
+ }
184
+ ]}
185
+ />
186
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
187
+ );
188
+ }
189
+
190
+ const onResolveSuggestionHandler = (accepted) => {
191
+ suggestionsHandler(accepted, pConn, setStatus);
192
+ };
193
+
194
+ return (
195
+ <Styled{{COMPONENT_CLASS_NAME}}Wrapper>
196
+ <NumberInput
197
+ {...additionalProps}
198
+ label={label}
199
+ labelHidden={hideLabel}
200
+ info={validatemessage || helperText}
201
+ value={percentageValue}
202
+ status={status}
203
+ placeholder={placeholder}
204
+ disabled={disabled}
205
+ readOnly={readOnly}
206
+ required={required}
207
+ numberOfDecimals={numberOfDecimals}
208
+ showGroupSeparators={showGroupSeparators}
209
+ unit='percent'
210
+ data-testid={testId}
211
+ onChange={(enteredValue) => {
212
+ if (hasSuggestions) {
213
+ setStatus(undefined);
214
+ }
215
+ setPercentageValue(enteredValue);
216
+ if (value !== enteredValue) {
217
+ handleEvent(actions, 'change', propName, enteredValue);
218
+ hasValueChange.current = true;
219
+ }
220
+ }}
221
+ onBlur={() => {
222
+ const parsedValue = percentageValue !== '' ? Number(percentageValue) : '';
223
+ if (!value || hasValueChange.current) {
224
+ handleEvent(actions, 'blur', propName, parsedValue);
225
+ if (hasSuggestions) {
226
+ pConn.ignoreSuggestion();
227
+ }
228
+ hasValueChange.current = false;
229
+ }
230
+ }}
231
+ onResolveSuggestion={onResolveSuggestionHandler}
232
+ />
233
+ </Styled{{COMPONENT_CLASS_NAME}}Wrapper>
234
+ );
235
+ }
236
+
237
+ {{COMPONENT_CLASS_NAME}}.defaultProps = {
238
+ value: '',
239
+ placeholder: '',
240
+ validatemessage: '',
241
+ helperText: '',
242
+ hideLabel: false,
243
+ disabled: false,
244
+ readOnly: false,
245
+ required: false,
246
+ testId: null,
247
+ decimalPrecision: '',
248
+ showGroupSeparators: false,
249
+ additionalProps: {},
250
+ displayMode: null,
251
+ variant: 'inline',
252
+ currencyISOCode: 'USD',
253
+ formatter: '',
254
+ isTableFormatter: false,
255
+ hasSuggestions: false
256
+ };
257
+
258
+ {{COMPONENT_CLASS_NAME}}.propTypes = {
259
+ value: PropTypes.string,
260
+ placeholder: PropTypes.string,
261
+ label: PropTypes.string.isRequired,
262
+ hideLabel: PropTypes.bool,
263
+ getPConnect: PropTypes.func.isRequired,
264
+ validatemessage: PropTypes.string,
265
+ helperText: PropTypes.string,
266
+ disabled: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
267
+ readOnly: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
268
+ required: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
269
+ testId: PropTypes.string,
270
+ decimalPrecision: PropTypes.string,
271
+ showGroupSeparators: PropTypes.bool,
272
+ additionalProps: PropTypes.objectOf(PropTypes.any),
273
+ displayMode: PropTypes.string,
274
+ variant: PropTypes.string,
275
+ formatter: PropTypes.string,
276
+ currencyISOCode: PropTypes.string,
277
+ isTableFormatter: PropTypes.bool,
278
+ hasSuggestions: PropTypes.bool
279
+ };
280
+
281
+ export default {{COMPONENT_CLASS_NAME}};
@@ -0,0 +1,21 @@
1
+ export const configProps = {
2
+ value: '',
3
+ label: 'Percentage Sample',
4
+ showGroupSeparators: true,
5
+ placeholder: 'Percentage Placeholder',
6
+ helperText: 'Percentage Helper Text',
7
+ testId: 'percentage-12345678',
8
+ hasSuggestions: false
9
+ };
10
+
11
+ export const stateProps = {
12
+ value: '.PercentageSample',
13
+ hasSuggestions: false
14
+ };
15
+
16
+ export const fieldMetadata = {
17
+ classID: 'DIXL-MediaCo-Work-NewService',
18
+ type: 'Decimal',
19
+ displayAs: 'pxPercentage',
20
+ label: 'Percentage sample'
21
+ };
@@ -0,0 +1,7 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ export default styled.div(() => {
4
+ return css`
5
+ margin: 0px 0px;
6
+ `;
7
+ });
@@ -0,0 +1,10 @@
1
+ /* eslint-disable import/prefer-default-export */
2
+ export const suggestionsHandler = (accepted, pConn, setStatus) => {
3
+ if (accepted) {
4
+ pConn.acceptSuggestion();
5
+ setStatus('success');
6
+ } else {
7
+ pConn.ignoreSuggestion();
8
+ setStatus(undefined);
9
+ }
10
+ };
@@ -0,0 +1,347 @@
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
+ {{#IS_TEMPLATE}}
13
+ "icon": "images/pz-integer-active.svg",
14
+ {{/IS_TEMPLATE}}
15
+ "properties": [
16
+ {
17
+ "name": "label",
18
+ "label": "Field label",
19
+ "format": "TEXT",
20
+ "required": true
21
+ },
22
+ {
23
+ "name": "readOnly",
24
+ "label": "Edit mode",
25
+ "format": "READONLY"
26
+ },
27
+ {
28
+ "name": "showGroupSeparators",
29
+ "label": "Show thousands separator",
30
+ "format": "BOOLEAN",
31
+ "visibility": "(!displayAs = slider)"
32
+ },
33
+ {
34
+ "label": "Column settings",
35
+ "format": "GROUP",
36
+ "visibility": "@VIEWTYPE == 'MultiRecordDisplayAsTable'",
37
+ "properties": [
38
+ {
39
+ "name": "columnWidth",
40
+ "label": "Column width",
41
+ "format": "SELECT",
42
+ "source": [
43
+ {
44
+ "key": "auto",
45
+ "value": "Auto"
46
+ },
47
+ {
48
+ "key": "custom",
49
+ "value": "Custom"
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "name": "width",
55
+ "label": "Width (px)",
56
+ "format": "NUMBER",
57
+ "visibility": "$this.columnWidth == 'custom'"
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "label": "Input settings",
63
+ "format": "GROUP",
64
+ "visibility": "(!readOnly = true)",
65
+ "properties": [
66
+ {
67
+ "name": "displayAs",
68
+ "label": "Display as",
69
+ "format": "SELECT",
70
+ "defaultValue": "input",
71
+ "source": [
72
+ {
73
+ "key": "input",
74
+ "value": "Input"
75
+ },
76
+ {
77
+ "key": "stepper",
78
+ "value": "Stepper"
79
+ },
80
+ {
81
+ "key": "slider",
82
+ "value": "Slider"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "name": "min",
88
+ "label": "Min value",
89
+ "format": "NUMBER",
90
+ "defaultValue": "0",
91
+ "required": true,
92
+ "visibility": "(displayAs = slider)"
93
+ },
94
+ {
95
+ "name": "max",
96
+ "label": "Max value",
97
+ "format": "NUMBER",
98
+ "defaultValue": "100",
99
+ "required": true,
100
+ "visibility": "(displayAs = slider)"
101
+ },
102
+ {
103
+ "name": "defaultValue",
104
+ "label": "Default value",
105
+ "format": "NUMBER",
106
+ "visibility": "(displayAs = slider)"
107
+ },
108
+ {
109
+ "name": "step",
110
+ "label": "Increment",
111
+ "format": "NUMBER",
112
+ "defaultValue": "1",
113
+ "min": 1,
114
+ "visibility": "(displayAs = slider)"
115
+ },
116
+ {
117
+ "name": "placeholder",
118
+ "label": "Placeholder",
119
+ "format": "TEXT",
120
+ "visibility": "(!displayAs = slider && !displayAs = stepper)"
121
+ },
122
+ {
123
+ "name": "helperText",
124
+ "label": "Helper text",
125
+ "format": "TEXT"
126
+ },
127
+ {
128
+ "name": "showInput",
129
+ "label": "Show numeric input",
130
+ "format": "BOOLEAN",
131
+ "defaultValue": true,
132
+ "visibility": "(displayAs = slider)"
133
+ },
134
+ {
135
+ "name": "showTicks",
136
+ "label": "Show ticks",
137
+ "format": "BOOLEAN",
138
+ "defaultValue": true,
139
+ "visibility": "(displayAs = slider)"
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ "label": "Read-only settings",
145
+ "format": "GROUP",
146
+ "properties": [
147
+ {
148
+ "format": "SELECT",
149
+ "name": "formatter",
150
+ "label": "Format",
151
+ "defaultValue": "defaultInteger",
152
+ "source": [
153
+ {
154
+ "key": "defaultInteger",
155
+ "value": "Default"
156
+ },
157
+ {
158
+ "key": "Decimal",
159
+ "value": "Decimal"
160
+ },
161
+ {
162
+ "key": "Currency",
163
+ "value": "Currency"
164
+ },
165
+ {
166
+ "key": "Percentage",
167
+ "value": "Percentage"
168
+ }
169
+ ]
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "format": "CASCADE",
175
+ "visibility": "(formatter = Currency)",
176
+ "source": {
177
+ "format": "SELECT",
178
+ "label": "ISO Code Selection",
179
+ "name": "isoCodeSelection",
180
+ "defaultValue": "constant",
181
+ "source": [
182
+ {
183
+ "key": "constant",
184
+ "value": "Constant"
185
+ },
186
+ {
187
+ "key": "propertyRef",
188
+ "value": "Property Reference"
189
+ }
190
+ ]
191
+ },
192
+ "cascadeElements": [
193
+ {
194
+ "key": "currencyISOCode",
195
+ "format": "TEXT",
196
+ "name": "currencyISOCode",
197
+ "label": "Currency ISO Code",
198
+ "defaultValue": "USD",
199
+ "match": "constant"
200
+ },
201
+ {
202
+ "key": "currencyISOCode",
203
+ "format": "PROPERTY",
204
+ "name": "currencyISOCode",
205
+ "label": "Currency ISO Code",
206
+ "match": "propertyRef"
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ "format": "SELECT",
212
+ "name": "currencyDisplay",
213
+ "label": "Currency display",
214
+ "visibility": "(formatter = Currency)",
215
+ "defaultValue": "symbol",
216
+ "source": [
217
+ {
218
+ "key": "symbol",
219
+ "value": "Auto"
220
+ },
221
+ {
222
+ "key": "code",
223
+ "value": "Code"
224
+ },
225
+ {
226
+ "key": "name",
227
+ "value": "Name"
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "format": "SELECT",
233
+ "name": "negative",
234
+ "label": "Negative number display",
235
+ "visibility": "(formatter = Currency)",
236
+ "defaultValue": "minus-sign",
237
+ "source": [
238
+ {
239
+ "key": "minus-sign",
240
+ "value": "Standard"
241
+ },
242
+ {
243
+ "key": "parentheses",
244
+ "value": "Accounting"
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ "format": "SELECT",
250
+ "name": "notation",
251
+ "label": "Notation",
252
+ "visibility": "(!negative = parentheses)&&(!formatter = Percentage)",
253
+ "defaultValue": "standard",
254
+ "source": [
255
+ {
256
+ "key": "standard",
257
+ "value": "Standard"
258
+ },
259
+ {
260
+ "key": "compact",
261
+ "value": "Compact"
262
+ }
263
+ ]
264
+ },
265
+ {
266
+ "name": "decimalPrecision",
267
+ "label": "Decimal places",
268
+ "format": "NUMBER",
269
+ "visibility": "(formatter = Decimal)||(formatter = Percentage)",
270
+ "min": 0,
271
+ "max": 20
272
+ },
273
+ {
274
+ "format": "SELECT",
275
+ "name": "currencyDecimalPrecision",
276
+ "label": "Decimal places shown",
277
+ "visibility": "(formatter = Currency)",
278
+ "defaultValue": "auto",
279
+ "source": [
280
+ {
281
+ "key": "auto",
282
+ "value": "Auto"
283
+ },
284
+ {
285
+ "key": "0",
286
+ "value": "None"
287
+ },
288
+ {
289
+ "key": "1",
290
+ "value": "1"
291
+ },
292
+ {
293
+ "key": "2",
294
+ "value": "2"
295
+ },
296
+ {
297
+ "key": "3",
298
+ "value": "3"
299
+ },
300
+ {
301
+ "key": "4",
302
+ "value": "4"
303
+ }
304
+ ]
305
+ },
306
+ {
307
+ "label": "Conditions",
308
+ "format": "GROUP",
309
+ "properties": [
310
+ {
311
+ "name": "required",
312
+ "label": "Required",
313
+ "format": "REQUIRED",
314
+ "visibility": "(!readOnly = true)"
315
+ },
316
+ {
317
+ "name": "disabled",
318
+ "label": "Disabled",
319
+ "format": "DISABLED",
320
+ "visibility": "(!readOnly = true)"
321
+ },
322
+ {
323
+ "name": "visibility",
324
+ "label": "Visibility",
325
+ "format": "VISIBILITY"
326
+ }
327
+ ]
328
+ },
329
+ {
330
+ "label": "Advanced",
331
+ "format": "GROUP",
332
+ "collapsible": true,
333
+ "properties": [
334
+ {
335
+ "name": "testId",
336
+ "label": "Test ID",
337
+ "format": "TEXT",
338
+ "ignorePattern": "[^-_\\p{N}\\p{L}]",
339
+ "includeAnnotations": false
340
+ }
341
+ ]
342
+ }
343
+ ],
344
+ "defaultConfig": {
345
+ "label": "@L $this.label"
346
+ }
347
+ }