@pega/dx-component-builder-sdk 0.1.15 → 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 +55 -16
  54. package/src/tasks/validator/index.js +12 -3
  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);
@@ -39,6 +39,43 @@ const copyComponentTemplate = async options => {
39
39
  };
40
40
 
41
41
 
42
+ const checkAndCreateConfigComponentKey = async (targetDirectory) => {
43
+
44
+ const configFile = path.join(targetDirectory, "config-ext.json");
45
+ try {
46
+ const configData = fs.readFileSync(path.resolve(configFile), 'utf8');
47
+ let configObj = JSON.parse(configData);
48
+
49
+ let writeUpdate = false;
50
+ if (!configObj.componentKey || !configObj.label) {
51
+ const name = configObj.name;
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
+
63
+
64
+ // stringify "4", makes the json string look like JSON in the file
65
+ const configContent = JSON.stringify(configObj, null, 4);
66
+
67
+ // update file
68
+ fs.writeFileSync(configFile, configContent, { encoding: 'utf8' });
69
+ }
70
+
71
+ }
72
+ catch (err) {
73
+ // no config-ext.json file, so no update, which is ok
74
+ console.log(chalk.yellow("Component has no config file for extension."));
75
+ }
76
+ }
77
+
78
+
42
79
  const getListAvailableComponents = async (type) => {
43
80
  const components = await getComponents(false, CATEGORY_OVERRIDE);
44
81
  const fullList = COMPONENT_SCHEMA.overrideComponent[type];
@@ -102,6 +139,8 @@ const validateCompile = async (
102
139
  overrideDirectory
103
140
  });
104
141
 
142
+ await checkAndCreateConfigComponentKey(targetDirectory);
143
+
105
144
 
106
145
  console.log(chalk.green(`> Created ${componentKey} component in ${targetDirectory}`));
107
146
 
@@ -120,22 +159,22 @@ export default async options => {
120
159
  let inputType = options.params[3];
121
160
 
122
161
  switch (inputType.toLowerCase()) {
123
- case "forms" :
162
+ case "field" :
124
163
  case "f" :
125
- promptType = "forms";
164
+ promptType = "field";
126
165
  break;
127
- case "templates" :
166
+ case "template" :
128
167
  case "t" :
129
- promptType = "templates";
168
+ promptType = "template";
130
169
  break;
131
- case "widgets" :
170
+ case "widget" :
132
171
  case "w" :
133
- promptType = "widgets";
172
+ promptType = "widget";
134
173
  break;
135
- case "designsystemextensions" :
174
+ case "designsystemextension" :
136
175
  case "des" :
137
176
  case "d" :
138
- promptType = "designSystemExtensions";
177
+ promptType = "designSystemExtension";
139
178
  break;
140
179
  case "infra" :
141
180
  case "i" :
@@ -156,10 +195,10 @@ export default async options => {
156
195
  let componentDefaults = await getComponentDefaults();
157
196
  componentDefaults.library = library;
158
197
 
159
- const formsList = await getListAvailableComponents("forms");
160
- const desList = await getListAvailableComponents("designSystemExtensions");
161
- const templateList = await getListAvailableComponents("templates");
162
- 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");
163
202
  const infraList = await getListAvailableComponents("infra");
164
203
 
165
204
  const questions = [
@@ -179,7 +218,7 @@ export default async options => {
179
218
  choices: formsList,
180
219
  pageSize: 15,
181
220
  when(answers) {
182
- return answers.type === 'forms' || promptType === 'forms';
221
+ return answers.type === 'field' || promptType === 'field';
183
222
  }
184
223
  },
185
224
  {
@@ -189,7 +228,7 @@ export default async options => {
189
228
  choices: desList,
190
229
  pageSize: 15,
191
230
  when(answers) {
192
- return answers.type === 'designSystemExtensions' || promptType === 'designSystemExtensions';
231
+ return answers.type === 'designSystemExtension' || promptType === 'designSystemExtension';
193
232
  }
194
233
  },
195
234
  {
@@ -209,7 +248,7 @@ export default async options => {
209
248
  choices: templateList,
210
249
  pageSize: 15,
211
250
  when(answers) {
212
- return answers.type === 'templates' || promptType === 'templates';
251
+ return answers.type === 'template' || promptType === 'template';
213
252
  }
214
253
  },
215
254
  {
@@ -219,7 +258,7 @@ export default async options => {
219
258
  choices: widgetList,
220
259
  pageSize: 15,
221
260
  when(answers) {
222
- return answers.type === 'widgets' || promptType === 'widgets';
261
+ return answers.type === 'widget' || promptType === 'widget';
223
262
  }
224
263
  },
225
264