@projectcaluma/ember-form 11.0.0-beta.19 → 11.0.0-beta.21

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ # [@projectcaluma/ember-form-v11.0.0-beta.21](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-form-v11.0.0-beta.20...@projectcaluma/ember-form-v11.0.0-beta.21) (2022-06-09)
2
+
3
+
4
+ ### Features
5
+
6
+ * **caluma:** use new filter syntax of caluma ([7a00c03](https://github.com/projectcaluma/ember-caluma/commit/7a00c03a103933d9e48dd88adb7382441a298742))
7
+
8
+
9
+ ### BREAKING CHANGES
10
+
11
+ * **caluma:** `ember-caluma` now requires Caluma version >=
12
+ 8.0.0-beta.6
13
+
14
+ # [@projectcaluma/ember-form-v11.0.0-beta.20](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-form-v11.0.0-beta.19...@projectcaluma/ember-form-v11.0.0-beta.20) (2022-06-09)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **form:** improve validation of choice and multiple choice fields ([e828fad](https://github.com/projectcaluma/ember-caluma/commit/e828fad9557fd521ca9eec63af74f8cee12e3910))
20
+ * **form:** pass context to table row form ([af1031a](https://github.com/projectcaluma/ember-caluma/commit/af1031ae9e8138a404cd043199709025092da882))
21
+
22
+
23
+ ### Features
24
+
25
+ * **form:** add option to bypass the timeout when saving a field ([a2ba306](https://github.com/projectcaluma/ember-caluma/commit/a2ba306306f90a2d2279b34550507241f0987961))
26
+
1
27
  # [@projectcaluma/ember-form-v11.0.0-beta.19](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-form-v11.0.0-beta.18...@projectcaluma/ember-form-v11.0.0-beta.19) (2022-05-09)
2
28
 
3
29
 
@@ -10,7 +10,7 @@
10
10
  name={{@field.pk}}
11
11
  value={{option.slug}}
12
12
  checked={{includes option.slug @field.answer.value}}
13
- disabled={{@disabled}}
13
+ disabled={{or option.disabled @disabled}}
14
14
  {{on "change" this.update}}
15
15
  />
16
16
  {{#if (and option.disabled (not @disabled))}}
@@ -10,7 +10,7 @@
10
10
  name={{@field.pk}}
11
11
  value={{option.slug}}
12
12
  checked={{eq option.slug @field.answer.value}}
13
- disabled={{@disabled}}
13
+ disabled={{or option.disabled @disabled}}
14
14
  {{on "change" (fn @onSave option.slug)}}
15
15
  />
16
16
  {{#if (and option.disabled (not @disabled))}}
@@ -83,6 +83,7 @@
83
83
  @document={{this.documentToEdit}}
84
84
  @fieldset={{object-at 0 this.documentToEdit.fieldsets}}
85
85
  @disabled={{@disabled}}
86
+ @context={{@context}}
86
87
  />
87
88
  </modal.body>
88
89
 
@@ -1,11 +1,13 @@
1
- <label class="uk-form-label" for={{@field.pk}}>
1
+ <label class="uk-form-label" for={{@field.pk}} ...attributes>
2
2
  <span class="uk-text-bold">
3
3
  {{@field.question.raw.label}}
4
4
  </span>
5
5
 
6
- {{#if this.optional}}
6
+ {{#if (and (not @field.question.isCalculated) @field.optional)}}
7
7
  <span
8
8
  class="uk-margin-small-left uk-text-muted uk-text-lowercase uk-text-normal"
9
9
  >({{t "caluma.form.optional"}})</span>
10
10
  {{/if}}
11
+
12
+ {{yield}}
11
13
  </label>
@@ -65,15 +65,18 @@ export default class CfFieldComponent extends Component {
65
65
  * reduce the amount of saved values when changed rapidly.
66
66
  *
67
67
  * @method save
68
- * @param {String|Number|String[]} value
68
+ * @param {String|Number|String[]} value The new value to save to the field
69
+ * @param {Boolean} bypassTimeout Whether to bypass the timeout
69
70
  */
70
71
  @restartableTask
71
- *save(value) {
72
+ *save(value, bypassTimeout = false) {
72
73
  /* istanbul ignore next */
73
74
  if (macroCondition(isTesting())) {
74
75
  // no timeout
75
76
  } else {
76
- yield timeout(500);
77
+ if (!bypassTimeout) {
78
+ yield timeout(500);
79
+ }
77
80
  }
78
81
 
79
82
  if (this.args.field.answer) {
@@ -1,7 +1,7 @@
1
1
  #import FieldQuestion, FieldTableQuestion, SimpleQuestion from '../fragments/field.graphql'
2
2
 
3
3
  query DocumentForms($slug: String!) {
4
- allForms(filter: [{ slug: $slug }]) {
4
+ allForms(filter: [{ slugs: [$slug] }]) {
5
5
  edges {
6
6
  node {
7
7
  id
@@ -1,5 +1,5 @@
1
1
  query DynamicOptions($question: String!) {
2
- allQuestions(filter: [{ slug: $question }], first: 1) {
2
+ allQuestions(filter: [{ slugs: [$question] }], first: 1) {
3
3
  edges {
4
4
  node {
5
5
  id
@@ -582,10 +582,10 @@ export default class Field extends Base {
582
582
  @cached
583
583
  get errors() {
584
584
  return this._errors.map(({ type, context, value }) => {
585
- return this.intl.t(
586
- `caluma.form.validation.${type}`,
587
- Object.assign({}, context, { value })
588
- );
585
+ return this.intl.t(`caluma.form.validation.${type}`, {
586
+ ...context,
587
+ value,
588
+ });
589
589
  });
590
590
  }
591
591
 
@@ -742,10 +742,7 @@ export default class Field extends Base {
742
742
  * @private
743
743
  */
744
744
  _validateChoiceQuestion() {
745
- return validate("inclusion", this.answer.value, {
746
- allowBlank: true,
747
- in: (this.options || []).map(({ slug }) => slug),
748
- });
745
+ return this._validateOption(this.answer.value, true);
749
746
  }
750
747
 
751
748
  /**
@@ -757,15 +754,9 @@ export default class Field extends Base {
757
754
  * @private
758
755
  */
759
756
  _validateMultipleChoiceQuestion() {
760
- const value = this.answer.value;
761
- if (!value) {
762
- return true;
763
- }
764
- return value.map((value) =>
765
- validate("inclusion", value, {
766
- in: (this.options || []).map(({ slug }) => slug),
767
- })
768
- );
757
+ return this.answer.value
758
+ ? this.answer.value.map((value) => this._validateOption(value))
759
+ : true;
769
760
  }
770
761
 
771
762
  /**
@@ -779,9 +770,7 @@ export default class Field extends Base {
779
770
  async _validateDynamicChoiceQuestion() {
780
771
  await this.question.dynamicOptions;
781
772
 
782
- return validate("inclusion", this.answer.value, {
783
- in: (this.options || []).map(({ slug }) => slug),
784
- });
773
+ return this._validateOption(this.answer.value);
785
774
  }
786
775
 
787
776
  /**
@@ -801,10 +790,20 @@ export default class Field extends Base {
801
790
 
802
791
  await this.question.dynamicOptions;
803
792
 
804
- return value.map((value) => {
805
- return validate("inclusion", value, {
806
- in: (this.options || []).map(({ slug }) => slug),
807
- });
793
+ return value.map((value) => this._validateOption(value));
794
+ }
795
+
796
+ _validateOption(value, allowBlank = false) {
797
+ const label = Array.isArray(this.selected)
798
+ ? this.selected.find((selected) => selected.slug === value)?.label
799
+ : this.selected?.label;
800
+
801
+ return validate("inclusion", value, {
802
+ in: (this.options || [])
803
+ .filter((option) => !option.disabled)
804
+ .map(({ slug }) => slug),
805
+ allowBlank,
806
+ label: label ?? value,
808
807
  });
809
808
  }
810
809
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcaluma/ember-form",
3
- "version": "11.0.0-beta.19",
3
+ "version": "11.0.0-beta.21",
4
4
  "description": "Ember addon for rendering Caluma forms.",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -15,13 +15,13 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@ember/string": "^3.0.0",
18
- "@embroider/macros": "^1.6.0",
19
- "@embroider/util": "^1.6.0",
18
+ "@embroider/macros": "^1.7.1",
19
+ "@embroider/util": "^1.7.1",
20
20
  "@glimmer/component": "^1.1.2",
21
21
  "@glimmer/tracking": "^1.1.2",
22
22
  "@projectcaluma/ember-core": "^11.0.0-beta.7",
23
23
  "ember-apollo-client": "^4.0.2",
24
- "ember-auto-import": "^2.4.1",
24
+ "ember-auto-import": "^2.4.2",
25
25
  "ember-autoresize-modifier": "^0.5.0",
26
26
  "ember-cli-babel": "^7.26.11",
27
27
  "ember-cli-htmlbars": "^6.0.1",
@@ -31,10 +31,10 @@
31
31
  "ember-fetch": "^8.1.1",
32
32
  "ember-in-viewport": "^4.0.2",
33
33
  "ember-intl": "^5.7.2",
34
- "ember-math-helpers": "^2.18.1",
34
+ "ember-math-helpers": "^2.18.2",
35
35
  "ember-pikaday": "^4.0.0",
36
36
  "ember-power-select": "^5.0.4",
37
- "ember-resources": "^4.7.1",
37
+ "ember-resources": "^4.8.2",
38
38
  "ember-uikit": "^5.1.3",
39
39
  "ember-validators": "^4.1.2",
40
40
  "graphql": "^15.8.0",
@@ -45,10 +45,10 @@
45
45
  },
46
46
  "devDependencies": {
47
47
  "@ember/optional-features": "2.0.0",
48
- "@ember/test-helpers": "2.7.0",
49
- "@embroider/test-setup": "1.6.0",
50
- "@faker-js/faker": "6.3.1",
51
- "@projectcaluma/ember-testing": "11.0.0-beta.7",
48
+ "@ember/test-helpers": "2.8.1",
49
+ "@embroider/test-setup": "1.7.1",
50
+ "@faker-js/faker": "7.2.0",
51
+ "@projectcaluma/ember-testing": "11.0.0-beta.9",
52
52
  "@projectcaluma/ember-workflow": "^11.0.0-beta.7",
53
53
  "broccoli-asset-rev": "3.0.0",
54
54
  "ember-cli": "3.28.5",
@@ -68,15 +68,15 @@
68
68
  "ember-source-channel-url": "3.0.0",
69
69
  "ember-try": "2.0.0",
70
70
  "loader.js": "4.7.0",
71
- "miragejs": "0.1.43",
71
+ "miragejs": "0.1.45",
72
72
  "npm-run-all": "4.1.5",
73
73
  "qunit": "2.19.1",
74
74
  "qunit-dom": "2.0.0",
75
75
  "uuid": "8.3.2",
76
- "webpack": "5.72.0"
76
+ "webpack": "5.73.0"
77
77
  },
78
78
  "peerDependencies": {
79
- "@projectcaluma/ember-workflow": "^11.0.0-beta.6"
79
+ "@projectcaluma/ember-workflow": "^11.0.0-beta.7"
80
80
  },
81
81
  "peerDependenciesMeta": {
82
82
  "@projectcaluma/ember-workflow": {
@@ -46,7 +46,7 @@ caluma:
46
46
  greaterThanOrEqualTo: "Die Eingabe in diesem Feld darf nicht kleiner als {gte} sein"
47
47
  lessThanOrEqualTo: "Die Eingabe in diesem Feld darf nicht grösser als {lte} sein"
48
48
  notAnInteger: "Bitte geben Sie eine ganze Zahl ein"
49
- inclusion: "'{value}' ist kein gültiger Wert für dieses Feld"
49
+ inclusion: '"{label}" ist kein gültiger Wert für dieses Feld'
50
50
  deleteFailed: "Beim Löschen ist ein Fehler aufgetreten."
51
51
  uploadFailed: "Beim Hochladen ist ein Fehler aufgetreten."
52
52
  format: "{errorMsg}"
@@ -46,7 +46,7 @@ caluma:
46
46
  greaterThanOrEqualTo: "The value of this field must be greater than or equal to {gte}"
47
47
  lessThanOrEqualTo: "The value of this field must be less than or equal to {lte}"
48
48
  notAnInteger: "The value of this field must be an integer"
49
- inclusion: "'{value}' is not a valid value for this field"
49
+ inclusion: '"{label}" is not a valid value for this field'
50
50
  deleteFailed: "An error occured during deletion."
51
51
  uploadFailed: "An error occured during upload."
52
52
  format: "{errorMsg}"
@@ -46,7 +46,7 @@ caluma:
46
46
  greaterThanOrEqualTo: "La valeur indiquée dans ce champ ne doit pas être inférieure à {gte} "
47
47
  lessThanOrEqualTo: "L'entrée dans ce champ ne doit pas être supérieure à {lte} "
48
48
  notAnInteger: "Veuillez entrer un nombre entier"
49
- inclusion: "'{value}' n'est pas une valeur valide pour ce champ"
49
+ inclusion: '"{label}" n''est pas une valeur valide pour ce champ'
50
50
  deleteFailed: "Une erreur est survenue lors de la suppression."
51
51
  uploadFailed: "Une erreur s'est produite pendant le téléchargement."
52
52
  format: "{errorMsg}"
@@ -1,11 +0,0 @@
1
- import Component from "@glimmer/component";
2
-
3
- export default class CfFieldLabelComponent extends Component {
4
- get optional() {
5
- if (this.args.field?.question.isCalculated) {
6
- return false;
7
- }
8
-
9
- return this.args.field?.optional;
10
- }
11
- }