@pega/dx-component-builder-sdk 0.1.16 → 0.1.17

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 (55) hide show
  1. package/package.json +1 -1
  2. package/src/cli.js +6 -0
  3. package/src/constants.js +13 -17
  4. package/src/tasks/build-all/helper.js +76 -0
  5. package/src/tasks/build-all/index.js +121 -0
  6. package/src/tasks/create/index.js +52 -60
  7. package/src/tasks/create/templates/Constellation/Field/Boolean/demo.stories.jsx.mustache +1 -0
  8. package/src/tasks/create/templates/Constellation/Field/Date/demo.stories.jsx.mustache +11 -6
  9. package/src/tasks/create/templates/Constellation/Field/DateTime/demo.stories.jsx.mustache +11 -7
  10. package/src/tasks/create/templates/Constellation/Field/Decimal/demo.stories.jsx.mustache +7 -7
  11. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/demo.stories.jsx.mustache +9 -8
  12. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/demo.stories.jsx.mustache +7 -7
  13. package/src/tasks/create/templates/Constellation/Field/Integer/demo.stories.jsx.mustache +7 -7
  14. package/src/tasks/create/templates/Constellation/Field/Picklist/demo.stories.jsx.mustache +16 -10
  15. package/src/tasks/create/templates/Constellation/Field/Text/demo.stories.jsx.mustache +9 -7
  16. package/src/tasks/create/templates/Constellation/Field/Text-Email/demo.stories.jsx.mustache +8 -8
  17. package/src/tasks/create/templates/Constellation/Field/Text-Input/demo.stories.jsx.mustache +7 -7
  18. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/demo.stories.jsx.mustache +7 -7
  19. package/src/tasks/create/templates/Constellation/Field/Text-Phone/demo.stories.jsx.mustache +6 -6
  20. package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.jsx.mustache +1 -1
  21. package/src/tasks/create/templates/Constellation/Field/Text-URL/demo.stories.jsx.mustache +6 -6
  22. package/src/tasks/create/templates/Constellation/Field/Text-URL/index.jsx.mustache +1 -1
  23. package/src/tasks/create/templates/Constellation/Field/Text-URL/{text-url.js.mustache → text-url.jsx.mustache} +2 -1
  24. package/src/tasks/create/templates/Constellation/Field/TimeofDay/demo.stories.jsx.mustache +10 -5
  25. package/src/tasks/create/templates/Constellation/Template/DETAILS/demo.stories.jsx.mustache +59 -51
  26. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.jsx.mustache +64 -59
  27. package/src/tasks/create/templates/Constellation/Template/FORM/demo.stories.jsx.mustache +43 -39
  28. package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.jsx.mustache +46 -46
  29. package/src/tasks/create/templates/Constellation/Template/PAGE/demo.stories.jsx.mustache +24 -25
  30. package/src/tasks/create/templates/Constellation/Widget/CASE/demo.stories.jsx.mustache +7 -7
  31. package/src/tasks/create/templates/Constellation/Widget/CASE/mock.stories.js.mustache +2 -1
  32. package/src/tasks/create/templates/Constellation/Widget/PAGE/demo.stories.jsx.mustache +1 -1
  33. package/src/tasks/create/templates/Constellation/Widget/PAGE/mock.stories.js.mustache +2 -1
  34. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/demo.stories.jsx.mustache +6 -6
  35. package/src/tasks/create/templates/SDK-React/Field/Date/index.tsx.mustache +2 -2
  36. package/src/tasks/create/templates/SDK-React/Field/DateTime/index.tsx.mustache +2 -2
  37. package/src/tasks/create/templates/SDK-React/Field/Decimal/index.tsx.mustache +2 -2
  38. package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/index.tsx.mustache +1 -1
  39. package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/index.tsx.mustache +2 -2
  40. package/src/tasks/create/templates/SDK-React/Field/Integer/index.tsx.mustache +2 -2
  41. package/src/tasks/create/templates/SDK-React/Field/Text/index.tsx.mustache +1 -1
  42. package/src/tasks/create/templates/SDK-React/Field/Text-Email/index.tsx.mustache +2 -2
  43. package/src/tasks/create/templates/SDK-React/Field/Text-Input/index.tsx.mustache +1 -1
  44. package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/index.tsx.mustache +1 -1
  45. package/src/tasks/create/templates/SDK-React/Field/Text-Phone/index.tsx.mustache +1 -1
  46. package/src/tasks/create/templates/SDK-React/Field/Text-URL/index.tsx.mustache +2 -2
  47. package/src/tasks/create/templates/SDK-React/Field/TimeofDay/index.tsx.mustache +2 -2
  48. package/src/tasks/create/templates/SDK-React/Template/DETAILS/index.tsx.mustache +1 -1
  49. package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/index.tsx.mustache +1 -1
  50. package/src/tasks/delete/helper.js +1 -0
  51. package/src/tasks/index.js +1 -0
  52. package/src/tasks/map/map.js +5 -4
  53. package/src/tasks/override/index.js +31 -21
  54. package/src/tasks/validator/index.js +10 -1
  55. package/src/util.js +18 -32
@@ -11,58 +11,13 @@ export default {
11
11
  component: {{COMPONENT_CLASS_NAME}}
12
12
  };
13
13
 
14
- const Template = args => {
15
- const regionAChildren = pyReviewRaw.children[0].children.map(child => {
16
- return Primary.args.getPConnect().createComponent(child);
17
- });
18
- const regionBChildren = pyReviewRaw.children[1].children.map(child => {
19
- return Primary.args.getPConnect().createComponent(child);
20
- });
21
-
22
- return (
23
- <{{COMPONENT_CLASS_NAME}} {...args}>
24
- {regionAChildren}
25
- {regionBChildren}
26
- </{{COMPONENT_CLASS_NAME}}>
27
- );
28
- };
29
-
30
- export const Primary = Template.bind({});
31
-
32
- Primary.args = {
33
- template: 'DefaultForm',
34
- getPConnect: () => {
35
- return {
36
- getChildren: () => {
37
- return pyReviewRaw.children;
38
- },
39
- createComponent: config => {
40
- switch (config.config.value) {
41
- case '@P .FirstName':
42
- return renderField(regionChildrenResolved[0]);
43
- case '@P .MiddleName':
44
- return renderField(regionChildrenResolved[1]);
45
- case '@P .LastName':
46
- return renderField(regionChildrenResolved[2]);
47
- case '@P .Email':
48
- return renderField(regionChildrenResolved[3]);
49
- case '@P .PhoneNumber':
50
- return renderField(regionChildrenResolved[4]);
51
- case '@P .ServiceDate':
52
- return renderField(regionChildrenResolved[5]);
53
- }
54
- }
55
- };
56
- }
57
- };
58
-
59
14
  const renderField = resolvedProps => {
60
15
  const { displayMode, value = '', label = '' } = resolvedProps;
61
16
 
62
17
  const variant = displayMode === 'LABELS_LEFT' ? 'inline' : 'stacked';
63
18
 
64
19
  let val =
65
- value != '' ? (
20
+ value !== '' ? (
66
21
  <Text variant='h1' as='span'>
67
22
  {value}
68
23
  </Text>
@@ -98,3 +53,48 @@ const renderField = resolvedProps => {
98
53
  }
99
54
  return <FieldValueList variant={variant} fields={[{ name: label, value: val }]} />;
100
55
  };
56
+
57
+
58
+ export const base{{COMPONENT_CLASS_NAME}} = () => {
59
+ const props = {
60
+ template: 'DefaultForm',
61
+ getPConnect: () => {
62
+ return {
63
+ getChildren: () => {
64
+ return pyReviewRaw.children;
65
+ },
66
+ createComponent: config => {
67
+ // eslint-disable-next-line default-case
68
+ switch (config.config.value) {
69
+ case '@P .FirstName':
70
+ return renderField(regionChildrenResolved[0]);
71
+ case '@P .MiddleName':
72
+ return renderField(regionChildrenResolved[1]);
73
+ case '@P .LastName':
74
+ return renderField(regionChildrenResolved[2]);
75
+ case '@P .Email':
76
+ return renderField(regionChildrenResolved[3]);
77
+ case '@P .PhoneNumber':
78
+ return renderField(regionChildrenResolved[4]);
79
+ case '@P .ServiceDate':
80
+ return renderField(regionChildrenResolved[5]);
81
+ }
82
+ }
83
+ };
84
+ }
85
+ };
86
+
87
+ const regionAChildren = pyReviewRaw.children[0].children.map(child => {
88
+ return props.getPConnect().createComponent(child);
89
+ });
90
+ const regionBChildren = pyReviewRaw.children[1].children.map(child => {
91
+ return props.getPConnect().createComponent(child);
92
+ });
93
+
94
+ return (
95
+ <{{COMPONENT_CLASS_NAME}} {...props}>
96
+ {regionAChildren}
97
+ {regionBChildren}
98
+ </{{COMPONENT_CLASS_NAME}}>
99
+ );
100
+ };
@@ -44,8 +44,8 @@ export const base{{COMPONENT_CLASS_NAME}} = () => {
44
44
  resolve({});
45
45
  });
46
46
  },
47
- updateFieldValue: () => {},
48
- triggerFieldChange: () => {}
47
+ updateFieldValue: () => {/* nothing */},
48
+ triggerFieldChange: () => {/* nothing */}
49
49
  };
50
50
  },
51
51
  getChildren: () => {
@@ -61,31 +61,30 @@ export const base{{COMPONENT_CLASS_NAME}} = () => {
61
61
  return pyHome1Raw;
62
62
  },
63
63
  createComponent: config => {
64
- switch (config.type) {
65
- case 'AppAnnouncement':
66
- return (
67
- <PegaAppAnnouncement
68
- heading='Announcements'
69
- description={configProps.description}
70
- whatsNewLink={configProps.whatsnewlink}
71
- image={configProps.image.replace(/ /g, '+')}
72
- datasource={configProps.datasource}
73
- label={configProps.label}
74
- getPConnect={() => {
75
- return {
76
- getChildren: () => {
77
- return pyHome1Resolved.children;
78
- }
79
- };
80
- }}
81
- />
82
- );
64
+ if (config.type === 'AppAnnouncement') {
65
+ return (
66
+ <PegaAppAnnouncement
67
+ heading='Announcements'
68
+ description={configProps.description}
69
+ whatsNewLink={configProps.whatsnewlink}
70
+ image={configProps.image.replace(/ /g, '+')}
71
+ datasource={configProps.datasource}
72
+ label={configProps.label}
73
+ getPConnect={() => {
74
+ return {
75
+ getChildren: () => {
76
+ return pyHome1Resolved.children;
77
+ }
78
+ };
79
+ }}
80
+ />
81
+ );
83
82
  }
84
83
  },
85
- ignoreSuggestion: () => {},
86
- acceptSuggestion: () => {},
87
- setInheritedProps: () => {},
88
- resolveConfigProps: () => {}
84
+ ignoreSuggestion: () => {/* nothing */},
85
+ acceptSuggestion: () => {/* nothing */},
86
+ setInheritedProps: () => {/* nothing */},
87
+ resolveConfigProps: () => {/* nothing */}
89
88
  };
90
89
  }
91
90
  };
@@ -2,7 +2,7 @@ import { withKnobs } from '@storybook/addon-knobs';
2
2
 
3
3
  import {{COMPONENT_CLASS_NAME}} from './index.jsx';
4
4
 
5
- import { historyData } from './mock.stories';
5
+ import historyData from './mock.stories';
6
6
 
7
7
  export default {
8
8
  title: '{{COMPONENT_CLASS_NAME}}',
@@ -58,14 +58,14 @@ export const base{{COMPONENT_CLASS_NAME}} = () => {
58
58
  },
59
59
  getActionsApi: () => {
60
60
  return {
61
- updateFieldValue: () => {},
62
- triggerFieldChange: () => {}
61
+ updateFieldValue: () => {/* nothing */},
62
+ triggerFieldChange: () => {/* nothing */}
63
63
  };
64
64
  },
65
- ignoreSuggestion: () => {},
66
- acceptSuggestion: () => {},
67
- setInheritedProps: () => {},
68
- resolveConfigProps: () => {}
65
+ ignoreSuggestion: () => {/* nothing */},
66
+ acceptSuggestion: () => {/* nothing */},
67
+ setInheritedProps: () => {/* nothing */},
68
+ resolveConfigProps: () => {/* nothing */}
69
69
  };
70
70
  }
71
71
  };
@@ -1,4 +1,4 @@
1
- export const historyData = {
1
+ const historyData = {
2
2
  data: {
3
3
  fetchDateTime: '2023-01-18T12:04:56.517Z',
4
4
  pxObjClass: 'Pega-API-DataExploration-Data',
@@ -387,3 +387,4 @@ export const historyData = {
387
387
  },
388
388
  request: {}
389
389
  };
390
+ export default historyData;
@@ -3,7 +3,7 @@ import { withKnobs } from '@storybook/addon-knobs';
3
3
  import {{COMPONENT_CLASS_NAME}} from './index.jsx';
4
4
 
5
5
 
6
- import { configProps } from './mock.stories';
6
+ import configProps from './mock.stories';
7
7
 
8
8
  export default {
9
9
  title: '{{COMPONENT_CLASS_NAME}}',
@@ -1,4 +1,4 @@
1
- export const configProps = {
1
+ const configProps = {
2
2
  label: 'App announcement',
3
3
  header: 'Announcements',
4
4
  description: 'Welcome to MediaCo Application for testing SDK frameworks.',
@@ -20,3 +20,4 @@ export const configProps = {
20
20
  fields: {}
21
21
  }
22
22
  };
23
+ export default configProps;
@@ -48,14 +48,14 @@ export const base{{COMPONENT_CLASS_NAME}} = () => {
48
48
  return {
49
49
  getActionsApi: () => {
50
50
  return {
51
- updateFieldValue: () => {},
52
- triggerFieldChange: () => {}
51
+ updateFieldValue: () => {/* nothing */},
52
+ triggerFieldChange: () => {/* nothing */}
53
53
  };
54
54
  },
55
- ignoreSuggestion: () => {},
56
- acceptSuggestion: () => {},
57
- setInheritedProps: () => {},
58
- resolveConfigProps: () => {}
55
+ ignoreSuggestion: () => {/* nothing */},
56
+ acceptSuggestion: () => {/* nothing */},
57
+ setInheritedProps: () => {/* nothing */},
58
+ resolveConfigProps: () => {/* nothing */}
59
59
  };
60
60
  }
61
61
  };
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { KeyboardDatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';
3
3
  import DayjsUtils from '@date-io/dayjs';
4
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
4
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
5
5
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
6
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
6
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
 
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { KeyboardDateTimePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';
3
3
  import DayjsUtils from '@date-io/dayjs';
4
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
4
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
5
5
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
6
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
6
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
 
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import { TextField } from '@material-ui/core';
4
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
5
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import TextInput from '@pega/react-sdk-components/lib/components/fields/TextInput';
5
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
6
6
  import PropTypes from 'prop-types';
7
7
 
8
8
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import CurrencyTextField from '@unicef/material-ui-currency-textfield';
4
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
5
5
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
6
6
  import PropTypes from 'prop-types';
7
7
 
@@ -2,8 +2,8 @@
2
2
  import React from 'react';
3
3
  import { makeStyles } from '@material-ui/core/styles';
4
4
  import { TextField } from '@material-ui/core';
5
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
6
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
5
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
6
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
 
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import { TextField } from '@material-ui/core';
4
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
5
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
5
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
6
6
  import PropTypes from 'prop-types';
7
7
 
8
8
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import { TextField } from '@material-ui/core';
4
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
5
5
  import PropTypes from 'prop-types';
6
6
 
7
7
 
@@ -2,8 +2,8 @@
2
2
  import React from 'react';
3
3
  import { TextField, InputAdornment } from '@material-ui/core';
4
4
  import MailOutlineIcon from '@material-ui/icons/MailOutline';
5
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
6
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
5
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
6
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import { TextField } from '@material-ui/core';
4
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
5
5
  import PropTypes from 'prop-types';
6
6
 
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import { TextField } from '@material-ui/core';
4
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
5
5
  import PropTypes from 'prop-types';
6
6
 
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import MuiPhoneNumber from 'material-ui-phone-number';
4
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
5
5
  import PropTypes from 'prop-types';
6
6
 
7
7
 
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable react/no-unused-prop-types */
2
2
  import React from 'react';
3
3
  import { TextField } from '@material-ui/core';
4
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
5
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
4
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
5
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
6
6
  import PropTypes from 'prop-types';
7
7
 
8
8
 
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import TextInput from '@pega/react-sdk-components/lib/components/forms/TextInput';
2
+ import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
3
3
  import { KeyboardTimePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';
4
4
  import DayjsUtils from '@date-io/dayjs';
5
5
  import dayjs from 'dayjs';
6
6
  import AccessTimeIcon from '@material-ui/icons/AccessTime';
7
- import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtensions/FieldValueList';
7
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
8
8
  import PropTypes from 'prop-types';
9
9
 
10
10
  import Styled{{COMPONENT_CLASS_NAME}}Wrapper from './styles';
@@ -2,7 +2,7 @@
2
2
  import React from "react";
3
3
  // import PropTypes from "prop-types";
4
4
  import Grid from '@material-ui/core/Grid';
5
- import DetailsFields from '@pega/react-sdk-components/lib/components/designSystemExtensions/DetailsFields';
5
+ import DetailsFields from '@pega/react-sdk-components/lib/components/designSystemExtension/DetailsFields';
6
6
 
7
7
 
8
8
  import Styled{{COMPONENT_CLASS_NAME}}Wrapper from './styles';
@@ -2,7 +2,7 @@
2
2
  import React from "react";
3
3
  // import PropTypes from "prop-types";
4
4
  import Grid from '@material-ui/core/Grid';
5
- import DetailsFields from '@pega/react-sdk-components/lib/components/designSystemExtensions/DetailsFields';
5
+ import DetailsFields from '@pega/react-sdk-components/lib/components/designSystemExtension/DetailsFields';
6
6
 
7
7
  import Styled{{COMPONENT_CLASS_NAME}}Wrapper from './styles';
8
8
 
@@ -57,6 +57,7 @@ export const deleteLocalComponents = async (sourceOfComponents, category = CATEG
57
57
  {
58
58
  name: 'componentKey',
59
59
  type: 'rawlist',
60
+ pageSize: 15,
60
61
  message: 'Select component to delete',
61
62
  choices: localComponents
62
63
  },
@@ -11,4 +11,5 @@ export { default as validate } from './validator/index.js';
11
11
  export { default as authenticate } from './authenticate/index.js';
12
12
  export { default as upgrade } from './upgrade/index.js';
13
13
  export { default as buildComponent } from './build/index.js';
14
+ export { default as buildAllComponents } from './build-all/index.js';
14
15
  export { default as generateMissingCompanions } from './generate-missing-companions/index.js';
@@ -11,11 +11,12 @@ import {
11
11
  import {
12
12
  COMPONENTS_DIRECTORY_PATH,
13
13
  DXCB_CONFIG_JSON_FILENAME,
14
- CATEGORY_CUSTOM
14
+ CATEGORY_CUSTOM,
15
+ CATEGORY_CONSTELLATION,
16
+ COMPONENT_DIRECTORY_PREFIX_CUSTOM
15
17
  } from '../../constants.js';
16
18
 
17
19
  export const SDK_LOCAL_COMPONENT_MAP_FILENAME = "sdk-local-component-map.js";
18
- export const COMPONENT_PATH = "./src/components";
19
20
  export const IMPORT_END_TAG = "/*import end";
20
21
  export const MAP_END_TAG = "/*map end";
21
22
 
@@ -23,7 +24,7 @@ export const updateComponentMap = async (componentKey, category = CATEGORY_CUSTO
23
24
 
24
25
  const pegaConfigJsonPath = path.join(path.resolve(), DXCB_CONFIG_JSON_FILENAME);
25
26
  const pegaLocalComponentMapPath = path.join(path.resolve(), SDK_LOCAL_COMPONENT_MAP_FILENAME);
26
- const categoryDirectory = join("/", category.toLowerCase());
27
+ const categoryDirectory = (category === CATEGORY_CONSTELLATION) ? join("/", COMPONENT_DIRECTORY_PREFIX_CUSTOM + category.toLowerCase()) : join("/", category.toLowerCase());
27
28
 
28
29
  const componentNameNoPrefix = removeComponentPrefix(componentKey);
29
30
  const componentName = convertIntoPascalCase(componentNameNoPrefix);
@@ -73,7 +74,7 @@ export const updateComponentMap = async (componentKey, category = CATEGORY_CUSTO
73
74
 
74
75
  export const deleteFromComponentMap = async (componentKey, category = CATEGORY_CUSTOM) => {
75
76
  const pegaLocalComponentMapPath = path.join(path.resolve(), SDK_LOCAL_COMPONENT_MAP_FILENAME);
76
- const categoryDirectory = join("/", category.toLowerCase());
77
+ const categoryDirectory = (category === CATEGORY_CONSTELLATION) ? join("/", COMPONENT_DIRECTORY_PREFIX_CUSTOM + category.toLowerCase()) : join("/", category.toLowerCase());
77
78
  const pegaConfigJsonPath = path.join(path.resolve(), DXCB_CONFIG_JSON_FILENAME);
78
79
 
79
80
  const componentNameNoPrefix = removeComponentPrefix(componentKey);
@@ -44,15 +44,25 @@ const checkAndCreateConfigComponentKey = async (targetDirectory) => {
44
44
  const configFile = path.join(targetDirectory, "config-ext.json");
45
45
  try {
46
46
  const configData = fs.readFileSync(path.resolve(configFile), 'utf8');
47
- const configObj = JSON.parse(configData);
47
+ let configObj = JSON.parse(configData);
48
48
 
49
- if (!configObj.componentKey) {
49
+ let writeUpdate = false;
50
+ if (!configObj.componentKey || !configObj.label) {
50
51
  const name = configObj.name;
51
- const componentKey = name;
52
- const newConfigObj = { componentKey, ...configObj };
52
+
53
+ if (!configObj.componentKey) {
54
+ const componentKey = name;
55
+ configObj = { componentKey, ...configObj };
56
+ }
57
+
58
+ if (!configObj.label) {
59
+ const label = name;
60
+ configObj = { label, ...configObj };
61
+ }
62
+
53
63
 
54
64
  // stringify "4", makes the json string look like JSON in the file
55
- const configContent = JSON.stringify(newConfigObj, null, 4);
65
+ const configContent = JSON.stringify(configObj, null, 4);
56
66
 
57
67
  // update file
58
68
  fs.writeFileSync(configFile, configContent, { encoding: 'utf8' });
@@ -149,22 +159,22 @@ export default async options => {
149
159
  let inputType = options.params[3];
150
160
 
151
161
  switch (inputType.toLowerCase()) {
152
- case "forms" :
162
+ case "field" :
153
163
  case "f" :
154
- promptType = "forms";
164
+ promptType = "field";
155
165
  break;
156
- case "templates" :
166
+ case "template" :
157
167
  case "t" :
158
- promptType = "templates";
168
+ promptType = "template";
159
169
  break;
160
- case "widgets" :
170
+ case "widget" :
161
171
  case "w" :
162
- promptType = "widgets";
172
+ promptType = "widget";
163
173
  break;
164
- case "designsystemextensions" :
174
+ case "designsystemextension" :
165
175
  case "des" :
166
176
  case "d" :
167
- promptType = "designSystemExtensions";
177
+ promptType = "designSystemExtension";
168
178
  break;
169
179
  case "infra" :
170
180
  case "i" :
@@ -185,10 +195,10 @@ export default async options => {
185
195
  let componentDefaults = await getComponentDefaults();
186
196
  componentDefaults.library = library;
187
197
 
188
- const formsList = await getListAvailableComponents("forms");
189
- const desList = await getListAvailableComponents("designSystemExtensions");
190
- const templateList = await getListAvailableComponents("templates");
191
- const widgetList = await getListAvailableComponents("widgets");
198
+ const formsList = await getListAvailableComponents("field");
199
+ const desList = await getListAvailableComponents("designSystemExtension");
200
+ const templateList = await getListAvailableComponents("template");
201
+ const widgetList = await getListAvailableComponents("widget");
192
202
  const infraList = await getListAvailableComponents("infra");
193
203
 
194
204
  const questions = [
@@ -208,7 +218,7 @@ export default async options => {
208
218
  choices: formsList,
209
219
  pageSize: 15,
210
220
  when(answers) {
211
- return answers.type === 'forms' || promptType === 'forms';
221
+ return answers.type === 'field' || promptType === 'field';
212
222
  }
213
223
  },
214
224
  {
@@ -218,7 +228,7 @@ export default async options => {
218
228
  choices: desList,
219
229
  pageSize: 15,
220
230
  when(answers) {
221
- return answers.type === 'designSystemExtensions' || promptType === 'designSystemExtensions';
231
+ return answers.type === 'designSystemExtension' || promptType === 'designSystemExtension';
222
232
  }
223
233
  },
224
234
  {
@@ -238,7 +248,7 @@ export default async options => {
238
248
  choices: templateList,
239
249
  pageSize: 15,
240
250
  when(answers) {
241
- return answers.type === 'templates' || promptType === 'templates';
251
+ return answers.type === 'template' || promptType === 'template';
242
252
  }
243
253
  },
244
254
  {
@@ -248,7 +258,7 @@ export default async options => {
248
258
  choices: widgetList,
249
259
  pageSize: 15,
250
260
  when(answers) {
251
- return answers.type === 'widgets' || promptType === 'widgets';
261
+ return answers.type === 'widget' || promptType === 'widget';
252
262
  }
253
263
  },
254
264
 
@@ -30,6 +30,15 @@ const allowedSubtypes = [
30
30
  ])
31
31
  ];
32
32
 
33
+ // additional subtypes are manually added below
34
+ const allowedOverrideSubtypes = [
35
+ ...new Set([
36
+ ...COMPONENT_SCHEMA.subtype.field.map(({ value }) => value),
37
+ ...COMPONENT_SCHEMA.subtype.template,
38
+ ...COMPONENT_SCHEMA.subtype.widget.map(({ value }) => value)
39
+ ]), "ACTION", "DATA_CAPTURE", "SUMMARY", "CASEVIEW", "DATAVIEW", "LIST"
40
+ ];
41
+
33
42
  const schema = {
34
43
  type: 'object',
35
44
  properties: {
@@ -183,7 +192,7 @@ const overrideSchema = {
183
192
  subtype: {
184
193
  anyOf: [{ type: 'string' }, { type: 'array' }],
185
194
 
186
- enum: allowedSubtypes
195
+ enum: allowedOverrideSubtypes
187
196
  },
188
197
  icon: { type: 'string' },
189
198
  properties: {