@projectcaluma/ember-form 9.3.0 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ # [@projectcaluma/ember-form-v10.0.0](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-form-v9.3.0...@projectcaluma/ember-form-v10.0.0) (2021-11-25)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **form:** return default value for answer transform if empty ([ed703bc](https://github.com/projectcaluma/ember-caluma/commit/ed703bc2505e0ec59ec5b5ed6df4e0bb4f93db12))
7
+
8
+
9
+ ### chore
10
+
11
+ * **deps:** update dependencies and drop support for node 10 ([51d6dee](https://github.com/projectcaluma/ember-caluma/commit/51d6deeda9811518622ba0cefd8d3876651dab4f))
12
+
13
+
14
+ ### Features
15
+
16
+ * **action-button:** improve detection of work item for action button ([f00b7b0](https://github.com/projectcaluma/ember-caluma/commit/f00b7b06ac114c5bee2267132518c13ee1502ad0))
17
+
18
+
19
+ ### BREAKING CHANGES
20
+
21
+ * **deps:** Remove support for node v10
@@ -5,7 +5,7 @@
5
5
  as |isValid validate|
6
6
  >
7
7
  <WorkItemButton
8
- @workItemId={{@field.document.workItemUuid}}
8
+ @workItemId={{this.workItem}}
9
9
  @mutation={{this.action}}
10
10
  @label={{@field.question.label}}
11
11
  @disabled={{and (not-eq isValid null) (not isValid)}}
@@ -23,6 +23,13 @@ export default class CfFieldInputActionButtonComponent extends Component {
23
23
  );
24
24
  }
25
25
 
26
+ get workItem() {
27
+ return (
28
+ this.args.context?.actionButtonWorkItemId ||
29
+ this.args.field.document.workItemUuid
30
+ );
31
+ }
32
+
26
33
  get action() {
27
34
  return this.args.field.question.action.toLowerCase();
28
35
  }
@@ -37,11 +37,9 @@ export default class DocumentValidity extends Component {
37
37
 
38
38
  @restartableTask
39
39
  *_validate() {
40
- yield Promise.all(
41
- this.args.document.fields.map((field) => {
42
- return field.validate.linked().perform();
43
- })
44
- );
40
+ for (const field of this.args.document.fields) {
41
+ yield field.validate.linked().perform();
42
+ }
45
43
 
46
44
  if (this.isValid) {
47
45
  this.args.onValid?.();
@@ -162,3 +162,59 @@ fragment FieldQuestion on Question {
162
162
  }
163
163
  }
164
164
  }
165
+
166
+ fragment SimpleAnswer on Answer {
167
+ id
168
+ question {
169
+ slug
170
+ }
171
+ ... on StringAnswer {
172
+ stringValue: value
173
+ }
174
+ ... on IntegerAnswer {
175
+ integerValue: value
176
+ }
177
+ ... on FloatAnswer {
178
+ floatValue: value
179
+ }
180
+ ... on ListAnswer {
181
+ listValue: value
182
+ }
183
+ ... on FileAnswer {
184
+ fileValue: value {
185
+ uploadUrl
186
+ downloadUrl
187
+ metadata
188
+ name
189
+ }
190
+ }
191
+ ... on DateAnswer {
192
+ dateValue: value
193
+ }
194
+ }
195
+
196
+ fragment FieldAnswer on Answer {
197
+ ...SimpleAnswer
198
+ ... on TableAnswer {
199
+ tableValue: value {
200
+ id
201
+ form {
202
+ slug
203
+ questions {
204
+ edges {
205
+ node {
206
+ ...FieldQuestion
207
+ }
208
+ }
209
+ }
210
+ }
211
+ answers {
212
+ edges {
213
+ node {
214
+ ...SimpleAnswer
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
220
+ }
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentDateAnswerInput!) {
3
+ mutation SaveDocumentDateAnswer($input: SaveDocumentDateAnswerInput!) {
4
4
  saveDocumentDateAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentFileAnswerInput!) {
3
+ mutation SaveDocumentFileAnswer($input: SaveDocumentFileAnswerInput!) {
4
4
  saveDocumentFileAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentFloatAnswerInput!) {
3
+ mutation SaveDocumentFloatAnswer($input: SaveDocumentFloatAnswerInput!) {
4
4
  saveDocumentFloatAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentIntegerAnswerInput!) {
3
+ mutation SaveDocumentIntegerAnswer($input: SaveDocumentIntegerAnswerInput!) {
4
4
  saveDocumentIntegerAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentListAnswerInput!) {
3
+ mutation SaveDocumentListAnswer($input: SaveDocumentListAnswerInput!) {
4
4
  saveDocumentListAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentStringAnswerInput!) {
3
+ mutation SaveDocumentStringAnswer($input: SaveDocumentStringAnswerInput!) {
4
4
  saveDocumentStringAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentTableAnswerInput!) {
3
+ mutation saveDocumentTableAnswer($input: SaveDocumentTableAnswerInput!) {
4
4
  saveDocumentTableAnswer(input: $input) {
5
5
  answer {
6
6
  ...FieldAnswer
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- mutation ($input: SaveDocumentInput!) {
3
+ mutation SaveDocument($input: SaveDocumentInput!) {
4
4
  saveDocument(input: $input) {
5
5
  document {
6
6
  id
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-answer.graphql'
1
+ #import * from '../fragments/field.graphql'
2
2
 
3
- query ($id: ID!) {
3
+ query GetDocumentAnswers($id: ID!) {
4
4
  allDocuments(filter: [{ id: $id }]) {
5
5
  edges {
6
6
  node {
@@ -11,6 +11,19 @@ query ($id: ID!) {
11
11
  workItem {
12
12
  id
13
13
  }
14
+ case {
15
+ id
16
+ workItems {
17
+ edges {
18
+ node {
19
+ id
20
+ task {
21
+ id
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
14
27
  answers {
15
28
  edges {
16
29
  node {
@@ -1,6 +1,6 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-question.graphql'
1
+ #import FieldQuestion, FieldTableQuestion, SimpleQuestion from '../fragments/field.graphql'
2
2
 
3
- query ($slug: String!) {
3
+ query GetDocumentForms($slug: String!) {
4
4
  allForms(filter: [{ slug: $slug }]) {
5
5
  edges {
6
6
  node {
@@ -1,4 +1,4 @@
1
- query ($question: String!) {
1
+ query GetDynamicOptions($question: String!) {
2
2
  allQuestions(filter: [{ slug: $question }], first: 1) {
3
3
  edges {
4
4
  node {
@@ -1,4 +1,4 @@
1
- query getFileAnswerInfo($id: ID!) {
1
+ query GetFileAnswerInfo($id: ID!) {
2
2
  node(id: $id) {
3
3
  id
4
4
  ... on FileAnswer {
@@ -83,9 +83,21 @@ export default Base.extend({
83
83
  return decodeId(this.raw.id);
84
84
  }),
85
85
 
86
- workItemUuid: computed("raw.workItem.id", function () {
87
- return this.raw.workItem ? decodeId(this.raw.workItem.id) : null;
88
- }),
86
+ workItemUuid: computed(
87
+ "raw.{workItem.id,case.workItems.edges.[]}",
88
+ function () {
89
+ // The document is either directly attached to a work item (via
90
+ // CompleteTaskFormTask) or it's the case document and therefore
91
+ // indirectly attached to a work item (via CompleteWorkflowFormTask)
92
+ const rawId =
93
+ this.raw.workItem?.id ||
94
+ this.raw.case?.workItems.edges.find(
95
+ (edge) => edge.node.task.__typename === "CompleteWorkflowFormTask"
96
+ )?.node.id;
97
+
98
+ return rawId ? decodeId(rawId) : null;
99
+ }
100
+ ),
89
101
 
90
102
  /**
91
103
  * The root form of this document
@@ -234,7 +246,7 @@ export default Base.extend({
234
246
  }
235
247
 
236
248
  if (field.hidden || [undefined, null].includes(field.value)) {
237
- return field.question.isMultipleChoice ? [] : null;
249
+ return defaultValue ?? field.question.isMultipleChoice ? [] : null;
238
250
  }
239
251
 
240
252
  if (field.question.__typename === "TableQuestion") {
@@ -564,7 +564,7 @@ export default Base.extend({
564
564
  "fieldset.field.hidden",
565
565
  "jexlContext",
566
566
  "optionalDependencies.@each.{hidden,value}",
567
- "question.isRequired",
567
+ "question.{__typename,isRequired}",
568
568
  "pk",
569
569
  function () {
570
570
  if (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcaluma/ember-form",
3
- "version": "9.3.0",
3
+ "version": "10.0.0",
4
4
  "description": "Ember addon for rendering Caluma forms.",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -16,7 +16,7 @@
16
16
  "dependencies": {
17
17
  "@glimmer/component": "^1.0.4",
18
18
  "@glimmer/tracking": "^1.0.4",
19
- "@projectcaluma/ember-core": "9.2.0",
19
+ "@projectcaluma/ember-core": "^10.0.0",
20
20
  "ember-apollo-client": "^3.2.0",
21
21
  "ember-auto-import": "^2.2.3",
22
22
  "ember-cli-babel": "^7.26.6",
@@ -28,7 +28,7 @@
28
28
  "ember-intl": "^5.7.0",
29
29
  "ember-math-helpers": "^2.18.0",
30
30
  "ember-pikaday": "^3.0.0",
31
- "ember-power-select": "^4.1.6",
31
+ "ember-power-select": "^4.1.7",
32
32
  "ember-uikit": "^4.0.0",
33
33
  "graphql": "^15.6.1",
34
34
  "jexl": "^2.3.0",
@@ -40,10 +40,10 @@
40
40
  "@ember/optional-features": "2.0.0",
41
41
  "@ember/test-helpers": "2.6.0",
42
42
  "@embroider/test-setup": "0.47.2",
43
- "@projectcaluma/ember-testing": "9.0.0",
43
+ "@projectcaluma/ember-testing": "9.1.0",
44
44
  "@projectcaluma/ember-workflow": "9.0.3",
45
45
  "broccoli-asset-rev": "3.0.0",
46
- "ember-cli": "3.28.3",
46
+ "ember-cli": "3.28.4",
47
47
  "ember-cli-code-coverage": "1.0.3",
48
48
  "ember-cli-dependency-checker": "3.2.0",
49
49
  "ember-cli-inject-live-reload": "2.1.0",
@@ -65,10 +65,10 @@
65
65
  "qunit": "2.17.2",
66
66
  "qunit-dom": "2.0.0",
67
67
  "uuid": "8.3.2",
68
- "webpack": "5.64.0"
68
+ "webpack": "5.64.1"
69
69
  },
70
70
  "engines": {
71
- "node": "10.* || >= 12"
71
+ "node": "12.* || 14.* || >= 16"
72
72
  },
73
73
  "ember": {
74
74
  "edition": "octane"
@@ -1,57 +0,0 @@
1
- # import * from '@projectcaluma/ember-form/gql/fragments/field-question.graphql'
2
-
3
- fragment SimpleAnswer on Answer {
4
- id
5
- question {
6
- slug
7
- }
8
- ... on StringAnswer {
9
- stringValue: value
10
- }
11
- ... on IntegerAnswer {
12
- integerValue: value
13
- }
14
- ... on FloatAnswer {
15
- floatValue: value
16
- }
17
- ... on ListAnswer {
18
- listValue: value
19
- }
20
- ... on FileAnswer {
21
- fileValue: value {
22
- uploadUrl
23
- downloadUrl
24
- metadata
25
- name
26
- }
27
- }
28
- ... on DateAnswer {
29
- dateValue: value
30
- }
31
- }
32
-
33
- fragment FieldAnswer on Answer {
34
- ...SimpleAnswer
35
- ... on TableAnswer {
36
- tableValue: value {
37
- id
38
- form {
39
- slug
40
- questions {
41
- edges {
42
- node {
43
- ...FieldQuestion
44
- }
45
- }
46
- }
47
- }
48
- answers {
49
- edges {
50
- node {
51
- ...SimpleAnswer
52
- }
53
- }
54
- }
55
- }
56
- }
57
- }