@projectcaluma/ember-form 11.0.0-beta.9 → 11.0.1
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 +147 -0
- package/addon/components/cf-content.hbs +38 -37
- package/addon/components/cf-content.js +7 -3
- package/addon/components/cf-field/hint.hbs +5 -0
- package/addon/components/cf-field/input/action-button.hbs +23 -18
- package/addon/components/cf-field/input/action-button.js +60 -59
- package/addon/components/cf-field/input/checkbox.hbs +2 -3
- package/addon/components/cf-field/input/date.hbs +22 -25
- package/addon/components/cf-field/input/date.js +37 -22
- package/addon/components/cf-field/input/files.hbs +38 -0
- package/addon/components/cf-field/input/files.js +113 -0
- package/addon/components/cf-field/input/powerselect.hbs +27 -29
- package/addon/components/cf-field/input/powerselect.js +8 -2
- package/addon/components/cf-field/input/radio.hbs +2 -2
- package/addon/components/cf-field/input/table.hbs +3 -2
- package/addon/components/cf-field/input/table.js +1 -11
- package/addon/components/cf-field/input.hbs +8 -21
- package/addon/components/cf-field/input.js +32 -14
- package/addon/components/cf-field/label.hbs +4 -2
- package/addon/components/cf-field-value.hbs +10 -8
- package/addon/components/cf-field-value.js +6 -5
- package/addon/components/cf-field.hbs +30 -5
- package/addon/components/cf-field.js +24 -15
- package/addon/components/cf-form-wrapper.hbs +4 -1
- package/addon/components/cf-form.hbs +6 -1
- package/addon/gql/fragments/field.graphql +14 -7
- package/addon/gql/mutations/save-document-files-answer.graphql +9 -0
- package/addon/gql/queries/document-forms.graphql +1 -1
- package/addon/gql/queries/dynamic-options.graphql +4 -4
- package/addon/gql/queries/{fileanswer-info.graphql → filesanswer-info.graphql} +4 -4
- package/addon/helpers/format-graphql-error.js +21 -0
- package/addon/helpers/get-widget.js +16 -2
- package/addon/instance-initializers/form-widget-overrides.js +52 -0
- package/addon/lib/document.js +9 -1
- package/addon/lib/field.js +49 -46
- package/addon/lib/navigation.js +3 -1
- package/addon/lib/question.js +18 -5
- package/addon/modifiers/autoresize.js +14 -0
- package/addon/services/caluma-store.js +2 -0
- package/app/components/cf-field/{input/file.js → hint.js} +1 -1
- package/app/components/cf-field/input/files.js +1 -0
- package/app/helpers/format-graphql-error.js +1 -0
- package/app/helpers/get-widget.js +1 -4
- package/app/instance-initializers/form-widget-overrides.js +4 -0
- package/app/modifiers/autoresize.js +1 -0
- package/app/styles/@projectcaluma/ember-form.scss +5 -15
- package/app/styles/_flatpickr.scss +47 -0
- package/blueprints/@projectcaluma/ember-form/index.js +1 -1
- package/index.js +12 -0
- package/package.json +49 -40
- package/translations/de.yaml +6 -6
- package/translations/en.yaml +6 -6
- package/translations/fr.yaml +6 -6
- package/addon/components/cf-field/input/file.hbs +0 -32
- package/addon/components/cf-field/input/file.js +0 -89
- package/addon/components/cf-field/label.js +0 -11
- package/addon/gql/mutations/remove-answer.graphql +0 -7
- package/addon/gql/mutations/save-document-file-answer.graphql +0 -9
- package/config/environment.js +0 -5
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@projectcaluma/ember-form",
|
3
|
-
"version": "11.0.
|
3
|
+
"version": "11.0.1",
|
4
4
|
"description": "Ember addon for rendering Caluma forms.",
|
5
5
|
"keywords": [
|
6
6
|
"ember-addon"
|
@@ -9,71 +9,80 @@
|
|
9
9
|
"homepage": "https://docs.caluma.io/ember-caluma",
|
10
10
|
"repository": "github:projectcaluma/ember-caluma",
|
11
11
|
"scripts": {
|
12
|
-
"test": "npm
|
12
|
+
"test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"",
|
13
13
|
"test:ember": "ember test",
|
14
14
|
"test:ember-compatibility": "ember try:each"
|
15
15
|
},
|
16
16
|
"dependencies": {
|
17
|
-
"@
|
18
|
-
"@
|
19
|
-
"@
|
20
|
-
"
|
21
|
-
"
|
22
|
-
"ember-
|
17
|
+
"@ember/string": "^3.0.1",
|
18
|
+
"@embroider/macros": "^1.10.0",
|
19
|
+
"@embroider/util": "^1.9.0",
|
20
|
+
"@glimmer/component": "^1.1.2",
|
21
|
+
"@glimmer/tracking": "^1.1.2",
|
22
|
+
"@projectcaluma/ember-core": "^11.0.1",
|
23
|
+
"ember-apollo-client": "~4.0.2",
|
24
|
+
"ember-auto-import": "^2.6.0",
|
25
|
+
"ember-autoresize-modifier": "^0.7.0",
|
23
26
|
"ember-cli-babel": "^7.26.11",
|
24
|
-
"ember-cli-htmlbars": "^6.0
|
27
|
+
"ember-cli-htmlbars": "^6.2.0",
|
25
28
|
"ember-cli-showdown": "^6.0.1",
|
26
29
|
"ember-composable-helpers": "^5.0.0",
|
27
|
-
"ember-concurrency": "^2.
|
28
|
-
"ember-fetch": "^8.1.
|
29
|
-
"ember-
|
30
|
+
"ember-concurrency": "^2.3.7",
|
31
|
+
"ember-fetch": "^8.1.2",
|
32
|
+
"ember-flatpickr": "^3.2.3",
|
33
|
+
"ember-in-viewport": "^4.1.0",
|
30
34
|
"ember-intl": "^5.7.2",
|
31
|
-
"ember-math-helpers": "^
|
32
|
-
"ember-
|
33
|
-
"ember-
|
34
|
-
"ember-
|
35
|
-
"ember-
|
36
|
-
"ember-validators": "^4.1.0",
|
35
|
+
"ember-math-helpers": "^3.0.0",
|
36
|
+
"ember-power-select": "^6.0.1",
|
37
|
+
"ember-resources": "^5.6.2",
|
38
|
+
"ember-uikit": "^6.1.1",
|
39
|
+
"ember-validators": "^4.1.2",
|
37
40
|
"graphql": "^15.8.0",
|
38
41
|
"jexl": "^2.3.0",
|
39
42
|
"lodash.isequal": "^4.5.0",
|
40
|
-
"luxon": "^2.
|
43
|
+
"luxon": "^3.2.1",
|
41
44
|
"tracked-toolbox": "^1.2.3"
|
42
45
|
},
|
43
46
|
"devDependencies": {
|
44
47
|
"@ember/optional-features": "2.0.0",
|
45
|
-
"@ember/test-helpers": "2.
|
46
|
-
"@embroider/test-setup": "1.
|
47
|
-
"@faker-js/faker": "6.0
|
48
|
-
"@projectcaluma/ember-testing": "11.0.
|
49
|
-
"@projectcaluma/ember-workflow": "11.0.
|
48
|
+
"@ember/test-helpers": "2.7.0",
|
49
|
+
"@embroider/test-setup": "2.1.1",
|
50
|
+
"@faker-js/faker": "7.6.0",
|
51
|
+
"@projectcaluma/ember-testing": "11.0.1",
|
52
|
+
"@projectcaluma/ember-workflow": "^11.0.1",
|
50
53
|
"broccoli-asset-rev": "3.0.0",
|
51
|
-
"
|
52
|
-
"ember-cli
|
53
|
-
"ember-cli-
|
54
|
+
"concurrently": "7.6.0",
|
55
|
+
"ember-cli": "4.9.2",
|
56
|
+
"ember-cli-code-coverage": "2.0.0",
|
57
|
+
"ember-cli-dependency-checker": "3.3.1",
|
54
58
|
"ember-cli-inject-live-reload": "2.1.0",
|
55
|
-
"ember-cli-mirage": "
|
59
|
+
"ember-cli-mirage": "3.0.0-alpha.3",
|
56
60
|
"ember-cli-sri": "2.1.1",
|
57
61
|
"ember-cli-terser": "4.0.2",
|
58
|
-
"ember-disable-prototype-extensions": "1.1.3",
|
59
|
-
"ember-export-application-global": "2.0.1",
|
60
62
|
"ember-load-initializers": "2.1.2",
|
61
|
-
"ember-
|
62
|
-
"ember-
|
63
|
-
"ember-
|
64
|
-
"ember-source": "3.28.8",
|
63
|
+
"ember-qunit": "6.1.1",
|
64
|
+
"ember-resolver": "8.1.0",
|
65
|
+
"ember-source": "4.10.0",
|
65
66
|
"ember-source-channel-url": "3.0.0",
|
66
67
|
"ember-try": "2.0.0",
|
67
68
|
"loader.js": "4.7.0",
|
68
|
-
"miragejs": "0.1.
|
69
|
-
"
|
70
|
-
"qunit": "2.17.2",
|
69
|
+
"miragejs": "0.1.47",
|
70
|
+
"qunit": "2.19.4",
|
71
71
|
"qunit-dom": "2.0.0",
|
72
|
-
"uuid": "
|
73
|
-
"webpack": "5.
|
72
|
+
"uuid": "9.0.0",
|
73
|
+
"webpack": "5.75.0"
|
74
|
+
},
|
75
|
+
"peerDependencies": {
|
76
|
+
"@projectcaluma/ember-workflow": "^11.0.1",
|
77
|
+
"ember-source": "^3.28.0 || ^4.0.0"
|
78
|
+
},
|
79
|
+
"peerDependenciesMeta": {
|
80
|
+
"@projectcaluma/ember-workflow": {
|
81
|
+
"optional": true
|
82
|
+
}
|
74
83
|
},
|
75
84
|
"engines": {
|
76
|
-
"node": "
|
85
|
+
"node": "14.* || 16.* || >= 18"
|
77
86
|
},
|
78
87
|
"ember": {
|
79
88
|
"edition": "octane"
|
package/translations/de.yaml
CHANGED
@@ -12,6 +12,10 @@ caluma:
|
|
12
12
|
optionNotAvailable: "Diese Option ist nicht mehr verfügbar"
|
13
13
|
info: "Mehr Informationen"
|
14
14
|
|
15
|
+
error:
|
16
|
+
intro: "Oh nein, auf unserer Seite ist etwas schief gelaufen. Ihre Antwort konnte nicht gespeichert werden."
|
17
|
+
details: "Technische Details:"
|
18
|
+
|
15
19
|
navigation:
|
16
20
|
next: "Weiter"
|
17
21
|
previous: "Zurück"
|
@@ -34,7 +38,6 @@ caluma:
|
|
34
38
|
options-empty: "Keine Optionen vorhanden"
|
35
39
|
search-placeholder: "Hier tippen um zu suchen"
|
36
40
|
search-empty: "Keine Optionen gefunden"
|
37
|
-
null: "Keine Auswahl"
|
38
41
|
|
39
42
|
validation:
|
40
43
|
blank: "Dieses Feld darf nicht leer gelassen werden"
|
@@ -43,11 +46,8 @@ caluma:
|
|
43
46
|
greaterThanOrEqualTo: "Die Eingabe in diesem Feld darf nicht kleiner als {gte} sein"
|
44
47
|
lessThanOrEqualTo: "Die Eingabe in diesem Feld darf nicht grösser als {lte} sein"
|
45
48
|
notAnInteger: "Bitte geben Sie eine ganze Zahl ein"
|
46
|
-
inclusion: "
|
49
|
+
inclusion: '"{label}" ist kein gültiger Wert für dieses Feld'
|
50
|
+
deleteFailed: "Beim Löschen ist ein Fehler aufgetreten."
|
47
51
|
uploadFailed: "Beim Hochladen ist ein Fehler aufgetreten."
|
48
52
|
format: "{errorMsg}"
|
49
53
|
table: "Mindestens eine Zeile der Tabelle wurde nicht korrekt ausgefüllt"
|
50
|
-
|
51
|
-
pikaday:
|
52
|
-
month-previous: "Vorheriger Monat"
|
53
|
-
month-next: "Nächster Monat"
|
package/translations/en.yaml
CHANGED
@@ -12,6 +12,10 @@ caluma:
|
|
12
12
|
optionNotAvailable: "This option is not available anymore"
|
13
13
|
info: "More information"
|
14
14
|
|
15
|
+
error:
|
16
|
+
intro: "Oh no, something went wrong on our side. Your answer could not be saved."
|
17
|
+
details: "Technical details:"
|
18
|
+
|
15
19
|
navigation:
|
16
20
|
next: "Next"
|
17
21
|
previous: "Previous"
|
@@ -34,7 +38,6 @@ caluma:
|
|
34
38
|
options-empty: "No options available"
|
35
39
|
search-placeholder: "Type here to search options"
|
36
40
|
search-empty: "Search didn't match any options"
|
37
|
-
null: "No selection"
|
38
41
|
|
39
42
|
validation:
|
40
43
|
blank: "This field can't be blank"
|
@@ -43,11 +46,8 @@ caluma:
|
|
43
46
|
greaterThanOrEqualTo: "The value of this field must be greater than or equal to {gte}"
|
44
47
|
lessThanOrEqualTo: "The value of this field must be less than or equal to {lte}"
|
45
48
|
notAnInteger: "The value of this field must be an integer"
|
46
|
-
inclusion: "
|
49
|
+
inclusion: '"{label}" is not a valid value for this field'
|
50
|
+
deleteFailed: "An error occured during deletion."
|
47
51
|
uploadFailed: "An error occured during upload."
|
48
52
|
format: "{errorMsg}"
|
49
53
|
table: "At least one row of the table was not filled in correctly"
|
50
|
-
|
51
|
-
pikaday:
|
52
|
-
month-previous: "Previous month"
|
53
|
-
month-next: "Next month"
|
package/translations/fr.yaml
CHANGED
@@ -12,6 +12,10 @@ caluma:
|
|
12
12
|
optionNotAvailable: "Cette option n'est plus disponible"
|
13
13
|
info: "Plus d'informations"
|
14
14
|
|
15
|
+
error:
|
16
|
+
intro: "Oh non, quelque chose a mal tourné de notre côté. Votre réponse n'a pas pu être sauvegardée."
|
17
|
+
details: "Détails techniques :"
|
18
|
+
|
15
19
|
navigation:
|
16
20
|
next: "suivante"
|
17
21
|
previous: "précédente"
|
@@ -34,7 +38,6 @@ caluma:
|
|
34
38
|
options-empty: "Pas d'options disponibles"
|
35
39
|
search-placeholder: "Tapez ici pour rechercher"
|
36
40
|
search-empty: "Pas d'options trouvées"
|
37
|
-
null: "Aucune sélection"
|
38
41
|
|
39
42
|
validation:
|
40
43
|
blank: "Ce champ ne doit pas être laissé vide"
|
@@ -43,11 +46,8 @@ caluma:
|
|
43
46
|
greaterThanOrEqualTo: "La valeur indiquée dans ce champ ne doit pas être inférieure à {gte} "
|
44
47
|
lessThanOrEqualTo: "L'entrée dans ce champ ne doit pas être supérieure à {lte} "
|
45
48
|
notAnInteger: "Veuillez entrer un nombre entier"
|
46
|
-
inclusion: "
|
49
|
+
inclusion: '"{label}" n''est pas une valeur valide pour ce champ'
|
50
|
+
deleteFailed: "Une erreur est survenue lors de la suppression."
|
47
51
|
uploadFailed: "Une erreur s'est produite pendant le téléchargement."
|
48
52
|
format: "{errorMsg}"
|
49
53
|
table: "Au moins une ligne du tableau n'a pas été remplie correctement"
|
50
|
-
|
51
|
-
pikaday:
|
52
|
-
month-previous: "Mois précédent"
|
53
|
-
month-next: "Mois suivant"
|
@@ -1,32 +0,0 @@
|
|
1
|
-
<div class="uk-flex-middle uk-grid-divider uk-grid-column-small" uk-grid>
|
2
|
-
<div uk-form-custom="target: true">
|
3
|
-
|
4
|
-
<input
|
5
|
-
type="file"
|
6
|
-
name={{@field.pk}}
|
7
|
-
id={{@field.pk}}
|
8
|
-
disabled={{@disabled}}
|
9
|
-
{{on "change" this.save}}
|
10
|
-
/>
|
11
|
-
<UkButton disabled={{@disabled}}>
|
12
|
-
{{t "caluma.form.selectFile"}}
|
13
|
-
</UkButton>
|
14
|
-
</div>
|
15
|
-
{{#if (and this.downloadUrl this.downloadName)}}
|
16
|
-
<div>
|
17
|
-
<UkButton
|
18
|
-
data-test-download-link
|
19
|
-
@color="link"
|
20
|
-
@onClick={{this.download}}
|
21
|
-
>
|
22
|
-
{{this.downloadName}}
|
23
|
-
</UkButton>
|
24
|
-
<UkIcon
|
25
|
-
class="uk-icon-button uk-margin-small-left"
|
26
|
-
role="button"
|
27
|
-
@icon="trash"
|
28
|
-
{{on "click" this.delete}}
|
29
|
-
/>
|
30
|
-
</div>
|
31
|
-
{{/if}}
|
32
|
-
</div>
|
@@ -1,89 +0,0 @@
|
|
1
|
-
import { action } from "@ember/object";
|
2
|
-
import { inject as service } from "@ember/service";
|
3
|
-
import Component from "@glimmer/component";
|
4
|
-
import { queryManager } from "ember-apollo-client";
|
5
|
-
import fetch from "fetch";
|
6
|
-
|
7
|
-
import removeAnswerMutation from "@projectcaluma/ember-form/gql/mutations/remove-answer.graphql";
|
8
|
-
import getFileAnswerInfoQuery from "@projectcaluma/ember-form/gql/queries/fileanswer-info.graphql";
|
9
|
-
|
10
|
-
export default class CfFieldInputFileComponent extends Component {
|
11
|
-
@service intl;
|
12
|
-
|
13
|
-
@queryManager apollo;
|
14
|
-
|
15
|
-
get downloadUrl() {
|
16
|
-
return this.args.field?.answer?.value?.downloadUrl;
|
17
|
-
}
|
18
|
-
|
19
|
-
get downloadName() {
|
20
|
-
return this.args.field?.answer?.value?.name;
|
21
|
-
}
|
22
|
-
|
23
|
-
@action
|
24
|
-
async download() {
|
25
|
-
const { downloadUrl } = await this.apollo.query(
|
26
|
-
{
|
27
|
-
query: getFileAnswerInfoQuery,
|
28
|
-
variables: { id: this.args.field.answer.raw.id },
|
29
|
-
fetchPolicy: "network-only",
|
30
|
-
},
|
31
|
-
"node.fileValue"
|
32
|
-
);
|
33
|
-
|
34
|
-
if (downloadUrl) {
|
35
|
-
window.open(downloadUrl, "_blank");
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
@action
|
40
|
-
async save({ target }) {
|
41
|
-
const file = target.files[0];
|
42
|
-
|
43
|
-
if (!file) {
|
44
|
-
return;
|
45
|
-
}
|
46
|
-
|
47
|
-
const { fileValue } = await this.args.onSave(file.name);
|
48
|
-
|
49
|
-
try {
|
50
|
-
const response = await fetch(fileValue.uploadUrl, {
|
51
|
-
method: "PUT",
|
52
|
-
body: file,
|
53
|
-
});
|
54
|
-
|
55
|
-
if (!response.ok) {
|
56
|
-
throw new Error();
|
57
|
-
}
|
58
|
-
|
59
|
-
this.args.field.answer.value = {
|
60
|
-
name: file.name,
|
61
|
-
downloadUrl: fileValue.downloadUrl,
|
62
|
-
};
|
63
|
-
} catch (error) {
|
64
|
-
await this.args.onSave(null);
|
65
|
-
this.args.field._errors = [{ type: "uploadFailed" }];
|
66
|
-
} finally {
|
67
|
-
// eslint-disable-next-line require-atomic-updates
|
68
|
-
target.value = "";
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
@action
|
73
|
-
async delete() {
|
74
|
-
try {
|
75
|
-
await this.apollo.mutate({
|
76
|
-
mutation: removeAnswerMutation,
|
77
|
-
variables: {
|
78
|
-
input: {
|
79
|
-
answer: this.args.field.answer.uuid,
|
80
|
-
},
|
81
|
-
},
|
82
|
-
});
|
83
|
-
|
84
|
-
await this.args.onSave(null);
|
85
|
-
} catch (error) {
|
86
|
-
this.args.field._errors = [{ type: "deleteFailed" }];
|
87
|
-
}
|
88
|
-
}
|
89
|
-
}
|