@abgov/nx-adsp 5.9.0-beta.1 → 5.9.0-beta.3

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 (24) hide show
  1. package/generators.json +5 -0
  2. package/package.json +1 -1
  3. package/src/generators/react-form/files/__fileName__/__fileName__.slice.ts__tmpl__ +2 -2
  4. package/src/generators/react-form/files/__fileName__/__fileName__.tsx__tmpl__ +2 -96
  5. package/src/generators/react-form/includes/input-template.ejs +107 -0
  6. package/src/generators/react-form/react-form.js +1 -1
  7. package/src/generators/react-form/react-form.js.map +1 -1
  8. package/src/generators/react-form/react-forms.spec.ts +1 -0
  9. package/src/generators/react-form/schema.d.ts +1 -0
  10. package/src/generators/react-form/schema.json +3 -3
  11. package/src/generators/react-task-list/files/__fileName__/__fileName__.module.css__tmpl__ +80 -0
  12. package/src/generators/react-task-list/files/__fileName__/__fileName__.slice.spec.ts__tmpl__ +26 -0
  13. package/src/generators/react-task-list/files/__fileName__/__fileName__.slice.ts__tmpl__ +723 -0
  14. package/src/generators/react-task-list/files/__fileName__/__fileName__.tsx__tmpl__ +595 -0
  15. package/src/generators/react-task-list/files/__fileName__/task.d.ts__tmpl__ +30 -0
  16. package/src/generators/react-task-list/react-task-list.d.ts +3 -0
  17. package/src/generators/react-task-list/react-task-list.js +124 -0
  18. package/src/generators/react-task-list/react-task-list.js.map +1 -0
  19. package/src/generators/react-task-list/react-task-list.spec.ts +71 -0
  20. package/src/generators/react-task-list/schema.d.ts +14 -0
  21. package/src/generators/react-task-list/schema.json +45 -0
  22. package/src/utils/form.d.ts +1 -0
  23. package/src/utils/form.js.map +1 -1
  24. package/src/utils/task.d.ts +6 -0
package/generators.json CHANGED
@@ -34,6 +34,11 @@
34
34
  "schema": "./src/generators/react-form/schema.json",
35
35
  "description": "Generator that creates a React component based on an ADSP Form Definition."
36
36
  },
37
+ "react-task-list": {
38
+ "factory": "./src/generators/react-task-list/react-task-list",
39
+ "schema": "./src/generators/react-task-list/schema.json",
40
+ "description": "Generator that creates a React component based on an ADSP Task Queue."
41
+ },
37
42
  "angular-app": {
38
43
  "factory": "./src/generators/angular-app/angular-app",
39
44
  "schema": "./src/generators/angular-app/schema.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abgov/nx-adsp",
3
- "version": "5.9.0-beta.1",
3
+ "version": "5.9.0-beta.3",
4
4
  "license": "Apache-2.0",
5
5
  "main": "src/index.js",
6
6
  "description": "Government of Alberta - Nx plugin for ADSP apps.",
@@ -11,7 +11,7 @@ import { UserState } from 'redux-oidc';
11
11
  import { CONFIG_FEATURE_KEY, ConfigState } from '../config.slice';
12
12
 
13
13
  export const <%= constantName %>_FEATURE_KEY = '<%= fileName %>';
14
- const FORM_DEFINITION_ID = '<%= fileName %>';
14
+ const FORM_DEFINITION_ID = '<%= id %>';
15
15
  const FORM_SERVICE_ID = 'urn:ads:platform:form-service';
16
16
 
17
17
  /*
@@ -23,7 +23,7 @@ const rules: Record<string, Record<string, RegExp>> = {
23
23
  <%_ sections.forEach(function([sectionKey, section]) { _%>
24
24
  <%= sectionKey %>: {
25
25
  <%_ Object.entries(section.properties).filter(([_, { pattern }]) => !!pattern).forEach(function([key, value]) { _%>
26
- <%= key %>: new RegExp('<%- value.pattern %>')
26
+ <%= key %>: new RegExp('<%- value.pattern %>'),
27
27
  <%_ }); _%>
28
28
  },
29
29
  <%_ }); _%>
@@ -14,6 +14,7 @@ import {
14
14
  GoAInputTime,
15
15
  GoANotification,
16
16
  GoASpinner,
17
+ GoATextArea,
17
18
  } from '@abgov/react-components';
18
19
  import { FunctionComponent, useEffect } from 'react';
19
20
  import { useDispatch, useSelector } from 'react-redux';
@@ -62,102 +63,7 @@ const <%= section.className %>FieldSet: FunctionComponent<FieldSetProps> = ({
62
63
  {!isReadOnly && inReview && <GoAButton type="tertiary" onClick={onEdit}>Edit</GoAButton>}
63
64
  </div>
64
65
  <%_ Object.entries(section.properties).forEach(function([key, value]) { _%>
65
- <%_ if (!value.type) { _%>
66
- <%_ if (value.constant) { _%>
67
- <p><%= value.constant %></p>
68
- <%_ } _%>
69
- <%_ } else { _%>
70
- <GoAFormItem mb="m" label="<%= value.title || key %>" helpText="<%= value.description %>">
71
- <%_ switch(value.type) {
72
- case 'string': _%>
73
- <%_ if (value.enum) { _%>
74
- <GoADropdown
75
- name="<%= key %>"
76
- disabled={isReadOnly || inReview}
77
- onChange={(name, updated) => onChange({ ...value, [name]: updated })}
78
- value={`${value.<%= key %> || ''}`}
79
- >
80
- <%_ value.enum.forEach((enumValue) => { _%>
81
- <GoADropdownItem value="<%= enumValue %>" label="<%= enumValue %>" />
82
- <%_ }); _%>
83
- </GoADropdown>
84
- <%_ } else { _%>
85
- <%_ switch(value.format) {
86
- case 'date-time': _%>
87
- <GoAInputDateTime
88
- name="<%= key %>"
89
- disabled={isReadOnly || inReview}
90
- value={value.<%= key %> ? new Date(value.<%= key %> as string) : null}
91
- onChange={(name, updated) => onChange({ ...value, [name]: (updated as Date)?.toISOString() })}
92
- />
93
- <%_ break;
94
- case 'date': _%>
95
- <GoAInputDate
96
- name="<%= key %>"
97
- disabled={isReadOnly || inReview}
98
- value={value.<%= key %> ? new Date(value.<%= key %> as string) : null}
99
- onChange={(name, updated) => onChange({ ...value, [name]: (updated as Date)?.toISOString() })}
100
- />
101
- <%_ break;
102
- case 'time': _%>
103
- <GoAInputTime
104
- name="<%= key %>"
105
- step={1}
106
- disabled={isReadOnly || inReview}
107
- value={value.<%= key %> ? new Date(value.<%= key %> as string) : null}
108
- onChange={(name, updated) => onChange({ ...value, [name]: (updated as Date)?.toISOString() })}
109
- />
110
- <%_ break;
111
- default: _%>
112
- <GoAInput
113
- type="text"
114
- disabled={isReadOnly || inReview}
115
- error={errors['<%= key %>']}
116
- placeholder="<%= value?.examples?.join(', ') || '' %>"
117
- onChange={(name, updated) => onChange({ ...value, [name]: updated })}
118
- value={`${value.<%= key %> || ''}`}
119
- name="<%= key %>"
120
- />
121
- <%_ break;
122
- } _%>
123
- <%_ } _%>
124
- <%_ break;
125
- case 'integer':
126
- case 'number': _%>
127
- <GoAInput
128
- type="number"
129
- disabled={isReadOnly || inReview}
130
- error={errors['<%= key %>']}
131
- placeholder="<%= value?.examples || []%>"
132
- onChange={(name, updated) => onChange({ ...value, [name]: parseFloat(updated) })}
133
- value={`${value.<%= key %> || ''}`}
134
- name="<%= key %>"
135
- <%_ if (value?.maximum !== undefined) { _%>
136
- max={<%= value.maximum %>}
137
- <%_ } _%>
138
- <%_ if (value?.minimum !== undefined) { _%>
139
- min={<%= value.minimum %>}
140
- <%_ } _%>
141
- <%_ if (value?.multipleOf !== undefined) { _%>
142
- step={<%= value.multipleOf %>}
143
- <%_ } _%>
144
- />
145
- <%_ break;
146
- case 'boolean': _%>
147
- <GoACheckbox
148
- disabled={isReadOnly || inReview}
149
- checked={value.<%= key %> as any || false}
150
- onChange={(name, updated) => onChange({ ...value, [name]: updated })}
151
- name="<%= key %>"
152
- />
153
- <%_ break;
154
- case 'array': _%>
155
- <%_ break;
156
- default:
157
- break; _%>
158
- <%_ } _%>
159
- </GoAFormItem>
160
- <%_ } _%>
66
+ <%- include(`${includesPath}/input-template.ejs`, {key: key, value: value, path: key, processArray: true, includesPath}); %>
161
67
  <%_ }); _%>
162
68
  </fieldset>
163
69
  );
@@ -0,0 +1,107 @@
1
+ <%_ if (!value.type) { _%>
2
+ <%_ if (value.constant) { _%>
3
+ <p><%= value.constant %></p>
4
+ <%_ } _%>
5
+ <%_ } else { _%>
6
+ <GoAFormItem mb="m" label="<%= value.title || key %>" helpText="<%= value.description %>">
7
+ <%_ switch(value.type) {
8
+ case 'string': _%>
9
+ <%_ if (value.enum) { _%>
10
+ <GoADropdown
11
+ name="<%= key %>"
12
+ disabled={isReadOnly || inReview}
13
+ onChange={(name,updated) => onChange({ ...value, [name]: updated })}
14
+ value={`${value.<%= path %> || ''}`}
15
+ >
16
+ <%_ value.enum.forEach((enumValue) => { _%>
17
+ <GoADropdownItem value="<%= enumValue %>" label="<%= enumValue %>" />
18
+ <%_ }); _%>
19
+ </GoADropdown>
20
+ <%_ } else { _%>
21
+ <%_ switch(value.format) {
22
+ case 'date-time': _%>
23
+ <GoAInputDateTime
24
+ name="<%= key %>"
25
+ disabled={isReadOnly || inReview}
26
+ value={value.<%= path %> ? new Date(value.<%= path %> as string) : null}
27
+ onChange={(name, updated) => onChange({ ...value, [name]: (updated as Date)?.toISOString() })}
28
+ />
29
+ <%_ break;
30
+ case 'date': _%>
31
+ <GoAInputDate
32
+ name="<%= key %>"
33
+ disabled={isReadOnly || inReview}
34
+ value={value.<%= path %> ? new Date(value.<%= path %> as string) : null}
35
+ onChange={(name, updated) => onChange({ ...value, [name]: (updated as Date)?.toISOString() })}
36
+ />
37
+ <%_ break;
38
+ case 'time': _%>
39
+ <GoAInputTime
40
+ name="<%= key %>"
41
+ step={1}
42
+ disabled={isReadOnly || inReview}
43
+ value={value.<%= path %> ? new Date(value.<%= path %> as string) : null}
44
+ onChange={(name, updated) => onChange({ ...value, [name]: (updated as Date)?.toISOString() })}
45
+ />
46
+ <%_ break;
47
+ default: _%>
48
+ <% if (value.maxLength > 100) { %>
49
+ <GoATextArea
50
+ disabled={isReadOnly || inReview}
51
+ error={errors['<%= path %>']}
52
+ placeholder="<%= value?.examples?.join(', ') || '' %>"
53
+ onChange={(name, updated) => onChange({ ...value, [name]: updated })}
54
+ value={`${value.<%= path %> || ''}`}
55
+ name="<%= key %>"
56
+ />
57
+ <% } else { %>
58
+ <GoAInput
59
+ type="text"
60
+ disabled={isReadOnly || inReview}
61
+ error={errors['<%= path %>']}
62
+ placeholder="<%= value?.examples?.join(', ') || '' %>"
63
+ onChange={(name, updated) => onChange({ ...value, [name]: updated })}
64
+ value={`${value.<%= path %> || ''}`}
65
+ name="<%= key %>"
66
+ />
67
+ <% } %>
68
+ <%_ break;
69
+ } _%>
70
+ <%_ } _%>
71
+ <%_ break;
72
+ case 'integer':
73
+ case 'number': _%>
74
+ <GoAInput
75
+ type="number"
76
+ disabled={isReadOnly || inReview}
77
+ error={errors['<%= path %>']}
78
+ placeholder="<%= value?.examples || []%>"
79
+ onChange={(name, updated) => onChange({ ...value, [name]: parseFloat(updated) })}
80
+ value={`${value.<%= path %> || ''}`}
81
+ name="<%= key %>"
82
+ <%_ if (value?.maximum !== undefined) { _%>
83
+ max={<%= value.maximum %>}
84
+ <%_ } _%>
85
+ <%_ if (value?.minimum !== undefined) { _%>
86
+ min={<%= value.minimum %>}
87
+ <%_ } _%>
88
+ <%_ if (value?.multipleOf !== undefined) { _%>
89
+ step={<%= value.multipleOf %>}
90
+ <%_ } _%>
91
+ />
92
+ <%_ break;
93
+ case 'boolean': _%>
94
+ <GoACheckbox
95
+ disabled={isReadOnly || inReview}
96
+ checked={value.<%= path %> as any || false}
97
+ onChange={(name, updated) => onChange({ ...value, [name]: updated })}
98
+ name="<%= key %>"
99
+ />
100
+ <%_ break;
101
+ case 'array': _%>
102
+ <%_ break;
103
+ default:
104
+ break; _%>
105
+ <%_ } _%>
106
+ </GoAFormItem>
107
+ <%_ } _%>
@@ -80,7 +80,7 @@ function addFiles(host, options) {
80
80
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
81
81
  const formNames = (0, devkit_1.names)(options.formDefinition.name);
82
82
  const interfaceDefinition = yield (0, form_1.generateFormInterface)(options.formDefinition);
83
- const templateOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, options), options.formDefinition), formNames), { interfaceDefinition, tmpl: '' });
83
+ const templateOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, options), options.formDefinition), formNames), { interfaceDefinition, includesPath: path.join(__dirname, 'includes'), tmpl: '' });
84
84
  (0, devkit_1.generateFiles)(host, path.join(__dirname, 'files'), `${options.projectRoot}/src/app`, templateOptions);
85
85
  });
86
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"react-form.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/react-form/react-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-form.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/react-form/react-form.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { Schema } from './schema';
9
9
  import generator from './react-form';
10
10
 
11
11
  const formDefinition: FormDefinition = {
12
+ id: 'some-intake',
12
13
  name: 'Some Intake',
13
14
  dataSchema: {
14
15
  type: 'object',
@@ -1,4 +1,5 @@
1
1
  import { EnvironmentName } from '@abgov/nx-oc';
2
+ import { FormDefinition } from '../../utils/form';
2
3
 
3
4
  export interface Schema {
4
5
  project: string;
@@ -23,12 +23,12 @@
23
23
  },
24
24
  "alias": "e",
25
25
  "x-prompt": {
26
- "message": "Which ADSP environment do you want to target?",
26
+ "message": "Which ADSP environment do you want to target? (Typically test for ADSP tenants.)",
27
27
  "type": "list",
28
28
  "items": [
29
- "dev",
30
29
  "test",
31
- "prod"
30
+ "prod",
31
+ "dev"
32
32
  ]
33
33
  }
34
34
  },
@@ -0,0 +1,80 @@
1
+ .taskList {
2
+ width: 80vw;
3
+ height: 80vh;
4
+ display: flex;
5
+ flex-direction: column;
6
+
7
+ .header {
8
+ height: 6vh;
9
+ flex-shrink: 0;
10
+ flex-grow: 0;
11
+
12
+ > div:first-child {
13
+ display: flex;
14
+ align-items: baseline;
15
+
16
+ > span {
17
+ margin-right: 14px;
18
+ }
19
+
20
+ > span:first-child {
21
+ margin-left: 14px;
22
+ }
23
+
24
+ > :last-child {
25
+ margin-left: auto;
26
+ }
27
+ }
28
+ }
29
+
30
+ .details {
31
+ height: 0;
32
+ transition: height 200ms;
33
+ position: relative;
34
+ flex-shrink: 0;
35
+
36
+ > * {
37
+ height: 100%;
38
+ width: 100%;
39
+ }
40
+
41
+ .detailsPlaceholder {
42
+ display: flex;
43
+ flex-direction: column;
44
+
45
+ > *:first-child {
46
+ flex-grow: 1;
47
+ }
48
+ }
49
+ }
50
+
51
+ .details[data-opened='true'] {
52
+ height: 74vh;
53
+ }
54
+
55
+ .list {
56
+ flex-grow: 1;
57
+ flex-shrink: 1;
58
+ position: relative;
59
+ overflow: hidden;
60
+
61
+ > div:first-child {
62
+ display: flex;
63
+ flex-direction: row;
64
+
65
+ > :first-child {
66
+ margin-right: auto;
67
+ }
68
+ }
69
+ }
70
+
71
+ .loading {
72
+ flex-grow: 2;
73
+ flex-shrink: 0;
74
+ height: 80vh;
75
+ display: flex;
76
+ > * {
77
+ margin: auto;
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,26 @@
1
+ import {
2
+ initial<%= className %>TaskListState,
3
+ <%= propertyName %>TaskListActions,
4
+ <%= propertyName %>TaskListReducer,
5
+ } from './<%= fileName %>.slice';
6
+
7
+ describe('<%= fileName %> slice', () => {
8
+ describe('<%= propertyName %>TaskListReducer', () => {
9
+ it('can handle initial state', () => {
10
+ expect(<%= propertyName %>TaskListReducer(undefined, { type: '' })).toEqual(
11
+ initial<%= className %>TaskListState
12
+ );
13
+ });
14
+
15
+ it('can handle set step action', () => {
16
+ expect(
17
+ <%= propertyName %>TaskListReducer(
18
+ undefined,
19
+ <%= propertyName %>TaskListActions.setFilter('active')
20
+ )
21
+ ).toMatchObject({ filter: 'active' });
22
+ });
23
+
24
+ // TODO: Add state unit tests.
25
+ });
26
+ });