@projectcaluma/ember-form 11.0.0-beta.2 → 11.0.0-beta.20
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 +190 -0
- package/addon/components/cf-content.hbs +37 -37
- package/addon/components/cf-content.js +2 -2
- package/addon/components/cf-field/hint.hbs +5 -0
- package/addon/components/cf-field/info.hbs +2 -2
- package/addon/components/cf-field/info.js +0 -15
- package/addon/components/cf-field/input/action-button.hbs +8 -4
- package/addon/components/cf-field/input/action-button.js +60 -59
- package/addon/components/cf-field/input/checkbox.hbs +3 -4
- package/addon/components/cf-field/input/date.hbs +10 -5
- package/addon/components/cf-field/input/date.js +40 -10
- package/addon/components/cf-field/input/file.hbs +2 -2
- package/addon/components/cf-field/input/file.js +2 -2
- 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/static.hbs +1 -1
- package/addon/components/cf-field/input/table.hbs +25 -24
- 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 +22 -7
- package/addon/components/cf-field-value.js +8 -33
- package/addon/components/cf-field.hbs +39 -6
- package/addon/components/cf-field.js +37 -17
- package/addon/components/cf-form-wrapper.hbs +3 -1
- package/addon/components/document-validity.js +16 -1
- package/addon/gql/fragments/field.graphql +30 -0
- 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/field.js +73 -46
- package/addon/lib/navigation.js +3 -1
- package/addon/lib/question.js +12 -4
- package/addon/modifiers/autoresize.js +16 -0
- package/app/components/cf-field/hint.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 +3 -15
- package/package.json +37 -25
- package/translations/de.yaml +6 -2
- package/translations/en.yaml +6 -2
- package/translations/fr.yaml +6 -2
- package/addon/components/cf-field/label.js +0 -11
- package/addon/instance-initializers/setup-pikaday-i18n.js +0 -35
@@ -19,6 +19,16 @@ fragment SimpleQuestion on Question {
|
|
19
19
|
value
|
20
20
|
}
|
21
21
|
placeholder
|
22
|
+
formatValidators {
|
23
|
+
edges {
|
24
|
+
node {
|
25
|
+
slug
|
26
|
+
regex
|
27
|
+
errorMsg
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
hintText
|
22
32
|
}
|
23
33
|
... on TextareaQuestion {
|
24
34
|
textareaMinLength: minLength
|
@@ -28,6 +38,16 @@ fragment SimpleQuestion on Question {
|
|
28
38
|
value
|
29
39
|
}
|
30
40
|
placeholder
|
41
|
+
formatValidators {
|
42
|
+
edges {
|
43
|
+
node {
|
44
|
+
slug
|
45
|
+
regex
|
46
|
+
errorMsg
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
hintText
|
31
51
|
}
|
32
52
|
... on IntegerQuestion {
|
33
53
|
integerMinValue: minValue
|
@@ -37,6 +57,7 @@ fragment SimpleQuestion on Question {
|
|
37
57
|
value
|
38
58
|
}
|
39
59
|
placeholder
|
60
|
+
hintText
|
40
61
|
}
|
41
62
|
... on FloatQuestion {
|
42
63
|
floatMinValue: minValue
|
@@ -46,6 +67,7 @@ fragment SimpleQuestion on Question {
|
|
46
67
|
value
|
47
68
|
}
|
48
69
|
placeholder
|
70
|
+
hintText
|
49
71
|
}
|
50
72
|
... on ChoiceQuestion {
|
51
73
|
choiceOptions: options {
|
@@ -62,6 +84,7 @@ fragment SimpleQuestion on Question {
|
|
62
84
|
id
|
63
85
|
value
|
64
86
|
}
|
87
|
+
hintText
|
65
88
|
}
|
66
89
|
... on MultipleChoiceQuestion {
|
67
90
|
multipleChoiceOptions: options {
|
@@ -78,18 +101,24 @@ fragment SimpleQuestion on Question {
|
|
78
101
|
id
|
79
102
|
value
|
80
103
|
}
|
104
|
+
hintText
|
81
105
|
}
|
82
106
|
... on DateQuestion {
|
83
107
|
dateDefaultAnswer: defaultAnswer {
|
84
108
|
id
|
85
109
|
value
|
86
110
|
}
|
111
|
+
hintText
|
87
112
|
}
|
88
113
|
... on StaticQuestion {
|
89
114
|
staticContent
|
90
115
|
}
|
91
116
|
... on CalculatedFloatQuestion {
|
92
117
|
calcExpression
|
118
|
+
hintText
|
119
|
+
}
|
120
|
+
... on FileQuestion {
|
121
|
+
hintText
|
93
122
|
}
|
94
123
|
... on ActionButtonQuestion {
|
95
124
|
action
|
@@ -112,6 +141,7 @@ fragment FieldTableQuestion on Question {
|
|
112
141
|
}
|
113
142
|
}
|
114
143
|
}
|
144
|
+
hintText
|
115
145
|
tableDefaultAnswer: defaultAnswer {
|
116
146
|
id
|
117
147
|
value {
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { helper } from "@ember/component/helper";
|
2
|
+
|
3
|
+
export function formatGraphqlErrorObject(error) {
|
4
|
+
try {
|
5
|
+
const path = error.path.join(".");
|
6
|
+
const { line, column } = error.locations[error.locations.length - 1];
|
7
|
+
|
8
|
+
return `${path}:${line}:${column}: ${error.message}`;
|
9
|
+
} catch (e) {
|
10
|
+
return null;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
export function formatGraphqlError(error) {
|
15
|
+
return (
|
16
|
+
error?.errors?.map(formatGraphqlErrorObject).filter(Boolean).join("\n") ??
|
17
|
+
""
|
18
|
+
);
|
19
|
+
}
|
20
|
+
|
21
|
+
export default helper(([error]) => formatGraphqlError(error));
|
@@ -1,6 +1,15 @@
|
|
1
1
|
import Helper from "@ember/component/helper";
|
2
2
|
import { warn } from "@ember/debug";
|
3
3
|
import { inject as service } from "@ember/service";
|
4
|
+
import { ensureSafeComponent } from "@embroider/util";
|
5
|
+
|
6
|
+
import InputComponent from "@projectcaluma/ember-form/components/cf-field/input";
|
7
|
+
import FormComponent from "@projectcaluma/ember-form/components/cf-form";
|
8
|
+
|
9
|
+
const DEFAULT_WIDGETS = {
|
10
|
+
"cf-field/input": InputComponent,
|
11
|
+
"cf-form": FormComponent,
|
12
|
+
};
|
4
13
|
|
5
14
|
/**
|
6
15
|
* Helper for getting the right widget.
|
@@ -42,9 +51,14 @@ export default class GetWidgetHelper extends Helper {
|
|
42
51
|
{ id: "ember-caluma.unregistered-override" }
|
43
52
|
);
|
44
53
|
|
45
|
-
if (override)
|
54
|
+
if (override) {
|
55
|
+
return ensureSafeComponent(
|
56
|
+
override.componentClass ?? override.component,
|
57
|
+
this
|
58
|
+
);
|
59
|
+
}
|
46
60
|
}
|
47
61
|
|
48
|
-
return defaultWidget;
|
62
|
+
return ensureSafeComponent(DEFAULT_WIDGETS[defaultWidget], this);
|
49
63
|
}
|
50
64
|
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import { setOwner } from "@ember/application";
|
2
|
+
import { inject as service } from "@ember/service";
|
3
|
+
|
4
|
+
import HiddenComponent from "@projectcaluma/ember-form/components/cf-field/input/hidden";
|
5
|
+
import PowerSelectComponent from "@projectcaluma/ember-form/components/cf-field/input/powerselect";
|
6
|
+
|
7
|
+
class HiddenOverride {
|
8
|
+
@service intl;
|
9
|
+
|
10
|
+
get label() {
|
11
|
+
return this.intl.t("caluma.form-builder.question.widgetOverrides.hidden");
|
12
|
+
}
|
13
|
+
|
14
|
+
component = "cf-field/input/hidden";
|
15
|
+
componentClass = HiddenComponent;
|
16
|
+
}
|
17
|
+
|
18
|
+
class PowerSelectOverride {
|
19
|
+
@service intl;
|
20
|
+
|
21
|
+
get label() {
|
22
|
+
return this.intl.t(
|
23
|
+
"caluma.form-builder.question.widgetOverrides.powerselect"
|
24
|
+
);
|
25
|
+
}
|
26
|
+
|
27
|
+
component = "cf-field/input/powerselect";
|
28
|
+
componentClass = PowerSelectComponent;
|
29
|
+
types = [
|
30
|
+
"ChoiceQuestion",
|
31
|
+
"MultipleChoiceQuestion",
|
32
|
+
"DynamicChoiceQuestion",
|
33
|
+
"DynamicMultipleChoiceQuestion",
|
34
|
+
];
|
35
|
+
}
|
36
|
+
|
37
|
+
export function initialize(appInstance) {
|
38
|
+
const options = appInstance.lookup("service:caluma-options");
|
39
|
+
|
40
|
+
const hiddenOverride = new HiddenOverride();
|
41
|
+
const powerSelectOverride = new PowerSelectOverride();
|
42
|
+
|
43
|
+
setOwner(hiddenOverride, appInstance);
|
44
|
+
setOwner(powerSelectOverride, appInstance);
|
45
|
+
|
46
|
+
options.registerComponentOverride(hiddenOverride);
|
47
|
+
options.registerComponentOverride(powerSelectOverride);
|
48
|
+
}
|
49
|
+
|
50
|
+
export default {
|
51
|
+
initialize,
|
52
|
+
};
|
package/addon/lib/field.js
CHANGED
@@ -3,6 +3,7 @@ import { assert } from "@ember/debug";
|
|
3
3
|
import { associateDestroyableChild } from "@ember/destroyable";
|
4
4
|
import { inject as service } from "@ember/service";
|
5
5
|
import { camelize } from "@ember/string";
|
6
|
+
import { isEmpty } from "@ember/utils";
|
6
7
|
import { tracked } from "@glimmer/tracking";
|
7
8
|
import { queryManager } from "ember-apollo-client";
|
8
9
|
import { restartableTask, lastValue, dropTask } from "ember-concurrency";
|
@@ -63,7 +64,6 @@ const fieldIsHiddenOrEmpty = (field) => {
|
|
63
64
|
*/
|
64
65
|
export default class Field extends Base {
|
65
66
|
@service intl;
|
66
|
-
@service validator;
|
67
67
|
|
68
68
|
@queryManager apollo;
|
69
69
|
|
@@ -83,18 +83,12 @@ export default class Field extends Base {
|
|
83
83
|
_createQuestion() {
|
84
84
|
const owner = getOwner(this);
|
85
85
|
|
86
|
-
|
86
|
+
this.question =
|
87
87
|
this.calumaStore.find(`Question:${this.raw.question.slug}`) ||
|
88
88
|
new (owner.factoryFor("caluma-model:question").class)({
|
89
89
|
raw: this.raw.question,
|
90
90
|
owner,
|
91
91
|
});
|
92
|
-
|
93
|
-
if (question.isDynamic) {
|
94
|
-
question.loadDynamicOptions.perform();
|
95
|
-
}
|
96
|
-
|
97
|
-
this.question = question;
|
98
92
|
}
|
99
93
|
|
100
94
|
_createAnswer() {
|
@@ -113,6 +107,7 @@ export default class Field extends Base {
|
|
113
107
|
|
114
108
|
answer = new Answer({
|
115
109
|
raw: {
|
110
|
+
id: null,
|
116
111
|
__typename: answerType,
|
117
112
|
question: { slug: this.raw.question.slug },
|
118
113
|
[camelize(answerType.replace(/Answer$/, "Value"))]: null,
|
@@ -152,6 +147,16 @@ export default class Field extends Base {
|
|
152
147
|
*/
|
153
148
|
@tracked _errors = [];
|
154
149
|
|
150
|
+
/**
|
151
|
+
* Currently rendered field components that use this field. This is used in
|
152
|
+
* the document validity component to await all current save tasks before
|
153
|
+
* validating.
|
154
|
+
*
|
155
|
+
* @property {Set} _components
|
156
|
+
* @private
|
157
|
+
*/
|
158
|
+
_components = new Set();
|
159
|
+
|
155
160
|
/**
|
156
161
|
* The primary key of the field. Consists of the document and question primary
|
157
162
|
* keys.
|
@@ -577,10 +582,10 @@ export default class Field extends Base {
|
|
577
582
|
@cached
|
578
583
|
get errors() {
|
579
584
|
return this._errors.map(({ type, context, value }) => {
|
580
|
-
return this.intl.t(
|
581
|
-
|
582
|
-
|
583
|
-
);
|
585
|
+
return this.intl.t(`caluma.form.validation.${type}`, {
|
586
|
+
...context,
|
587
|
+
value,
|
588
|
+
});
|
584
589
|
});
|
585
590
|
}
|
586
591
|
|
@@ -618,6 +623,35 @@ export default class Field extends Base {
|
|
618
623
|
this._errors = errors;
|
619
624
|
}
|
620
625
|
|
626
|
+
/**
|
627
|
+
* Validate the value against the regexes of the given format validators.
|
628
|
+
*
|
629
|
+
* @method _validateFormatValidators
|
630
|
+
* @return {Array<Boolean|Object>} An array of error objects or `true`
|
631
|
+
* @private
|
632
|
+
*/
|
633
|
+
_validateFormatValidators() {
|
634
|
+
const validators =
|
635
|
+
this.question.raw.formatValidators?.edges.map((edge) => edge.node) ?? [];
|
636
|
+
const value = this.answer.value;
|
637
|
+
|
638
|
+
if (isEmpty(value)) {
|
639
|
+
// empty values should not be validated since they are handled by the
|
640
|
+
// requiredness validation
|
641
|
+
return validators.map(() => true);
|
642
|
+
}
|
643
|
+
|
644
|
+
return validators.map((validator) => {
|
645
|
+
return (
|
646
|
+
new RegExp(validator.regex).test(value) || {
|
647
|
+
type: "format",
|
648
|
+
context: { errorMsg: validator.errorMsg },
|
649
|
+
value,
|
650
|
+
}
|
651
|
+
);
|
652
|
+
});
|
653
|
+
}
|
654
|
+
|
621
655
|
/**
|
622
656
|
* Method to validate if a question is required or not.
|
623
657
|
*
|
@@ -637,15 +671,12 @@ export default class Field extends Base {
|
|
637
671
|
* predefined by the question.
|
638
672
|
*
|
639
673
|
* @method _validateTextQuestion
|
640
|
-
* @return {
|
674
|
+
* @return {Array<Boolean|Object>} An array of error objects or `true`
|
641
675
|
* @private
|
642
676
|
*/
|
643
|
-
|
677
|
+
_validateTextQuestion() {
|
644
678
|
return [
|
645
|
-
...
|
646
|
-
this.answer.value,
|
647
|
-
this.question.raw.meta.formatValidators ?? []
|
648
|
-
)),
|
679
|
+
...this._validateFormatValidators(),
|
649
680
|
validate("length", this.answer.value, {
|
650
681
|
min: this.question.raw.textMinLength || 0,
|
651
682
|
max: this.question.raw.textMaxLength || Number.POSITIVE_INFINITY,
|
@@ -658,15 +689,12 @@ export default class Field extends Base {
|
|
658
689
|
* than predefined by the question.
|
659
690
|
*
|
660
691
|
* @method _validateTextareaQuestion
|
661
|
-
* @return {
|
692
|
+
* @return {Array<Boolean|Object>} An array of error objects or `true`
|
662
693
|
* @private
|
663
694
|
*/
|
664
|
-
|
695
|
+
_validateTextareaQuestion() {
|
665
696
|
return [
|
666
|
-
...
|
667
|
-
this.answer.value,
|
668
|
-
this.question.raw.meta.formatValidators ?? []
|
669
|
-
)),
|
697
|
+
...this._validateFormatValidators(),
|
670
698
|
validate("length", this.answer.value, {
|
671
699
|
min: this.question.raw.textareaMinLength || 0,
|
672
700
|
max: this.question.raw.textareaMaxLength || Number.POSITIVE_INFINITY,
|
@@ -714,10 +742,7 @@ export default class Field extends Base {
|
|
714
742
|
* @private
|
715
743
|
*/
|
716
744
|
_validateChoiceQuestion() {
|
717
|
-
return
|
718
|
-
allowBlank: true,
|
719
|
-
in: (this.options || []).map(({ slug }) => slug),
|
720
|
-
});
|
745
|
+
return this._validateOption(this.answer.value, true);
|
721
746
|
}
|
722
747
|
|
723
748
|
/**
|
@@ -729,15 +754,9 @@ export default class Field extends Base {
|
|
729
754
|
* @private
|
730
755
|
*/
|
731
756
|
_validateMultipleChoiceQuestion() {
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
}
|
736
|
-
return value.map((value) =>
|
737
|
-
validate("inclusion", value, {
|
738
|
-
in: (this.options || []).map(({ slug }) => slug),
|
739
|
-
})
|
740
|
-
);
|
757
|
+
return this.answer.value
|
758
|
+
? this.answer.value.map((value) => this._validateOption(value))
|
759
|
+
: true;
|
741
760
|
}
|
742
761
|
|
743
762
|
/**
|
@@ -749,11 +768,9 @@ export default class Field extends Base {
|
|
749
768
|
* @private
|
750
769
|
*/
|
751
770
|
async _validateDynamicChoiceQuestion() {
|
752
|
-
await this.question.
|
771
|
+
await this.question.dynamicOptions;
|
753
772
|
|
754
|
-
return
|
755
|
-
in: (this.options || []).map(({ slug }) => slug),
|
756
|
-
});
|
773
|
+
return this._validateOption(this.answer.value);
|
757
774
|
}
|
758
775
|
|
759
776
|
/**
|
@@ -771,12 +788,22 @@ export default class Field extends Base {
|
|
771
788
|
return true;
|
772
789
|
}
|
773
790
|
|
774
|
-
await this.question.
|
791
|
+
await this.question.dynamicOptions;
|
775
792
|
|
776
|
-
return value.map((value) =>
|
777
|
-
|
778
|
-
|
779
|
-
|
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,
|
780
807
|
});
|
781
808
|
}
|
782
809
|
|
package/addon/lib/navigation.js
CHANGED
@@ -232,7 +232,9 @@ export class NavigationItem extends Base {
|
|
232
232
|
@cached
|
233
233
|
get visibleFields() {
|
234
234
|
return this.fieldset.fields.filter(
|
235
|
-
(f) =>
|
235
|
+
(f) =>
|
236
|
+
!["FormQuestion", "StaticQuestion"].includes(f.questionType) &&
|
237
|
+
!f.hidden
|
236
238
|
);
|
237
239
|
}
|
238
240
|
|
package/addon/lib/question.js
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
import { assert } from "@ember/debug";
|
2
2
|
import { camelize } from "@ember/string";
|
3
3
|
import { queryManager } from "ember-apollo-client";
|
4
|
-
import { dropTask
|
4
|
+
import { dropTask } from "ember-concurrency";
|
5
|
+
import { trackedTask } from "ember-resources/util/ember-concurrency";
|
5
6
|
import { cached } from "tracked-toolbox";
|
6
7
|
|
7
8
|
import getDynamicOptions from "@projectcaluma/ember-form/gql/queries/dynamic-options.graphql";
|
@@ -71,13 +72,20 @@ export default class Question extends Base {
|
|
71
72
|
);
|
72
73
|
|
73
74
|
return (
|
74
|
-
question.node.dynamicChoiceOptions
|
75
|
+
question.node.dynamicChoiceOptions ??
|
75
76
|
question.node.dynamicMultipleChoiceOptions
|
76
77
|
);
|
77
78
|
}
|
78
79
|
|
79
|
-
|
80
|
-
|
80
|
+
dynamicOptions = trackedTask(this, this.loadDynamicOptions, () => []);
|
81
|
+
|
82
|
+
get dynamicChoiceOptions() {
|
83
|
+
return this.dynamicOptions.value ?? [];
|
84
|
+
}
|
85
|
+
|
86
|
+
get dynamicMultipleChoiceOptions() {
|
87
|
+
return this.dynamicOptions.value ?? [];
|
88
|
+
}
|
81
89
|
|
82
90
|
/**
|
83
91
|
* Whether the question is a single choice question
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { inject as service } from "@ember/service";
|
2
|
+
import AutoresizeModifier from "ember-autoresize-modifier/modifiers/autoresize";
|
3
|
+
|
4
|
+
export default class CustomAutoresizeModifier extends AutoresizeModifier {
|
5
|
+
@service inViewport;
|
6
|
+
|
7
|
+
didInstall() {
|
8
|
+
super.didInstall();
|
9
|
+
|
10
|
+
this.inViewport.watchElement(this.element).onEnter(this.resize);
|
11
|
+
}
|
12
|
+
|
13
|
+
willRemove() {
|
14
|
+
this.inViewport.stopWatching(this.element);
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from "@projectcaluma/ember-form/components/cf-field/hint";
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from "@projectcaluma/ember-form/helpers/format-graphql-error";
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from "@projectcaluma/ember-form/modifiers/autoresize";
|
@@ -5,19 +5,7 @@
|
|
5
5
|
|
6
6
|
@import "../uikit-overwrites";
|
7
7
|
|
8
|
-
.
|
9
|
-
|
10
|
-
|
11
|
-
padding-left: 26px;
|
12
|
-
|
13
|
-
.uk-checkbox {
|
14
|
-
position: absolute;
|
15
|
-
top: 0.25em;
|
16
|
-
left: 0;
|
17
|
-
margin: 0;
|
18
|
-
}
|
19
|
-
|
20
|
-
& + br {
|
21
|
-
display: none;
|
22
|
-
}
|
8
|
+
.table-controls > .uk-icon {
|
9
|
+
min-height: 20px;
|
10
|
+
min-width: 20px;
|
23
11
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@projectcaluma/ember-form",
|
3
|
-
"version": "11.0.0-beta.
|
3
|
+
"version": "11.0.0-beta.20",
|
4
4
|
"description": "Ember addon for rendering Caluma forms.",
|
5
5
|
"keywords": [
|
6
6
|
"ember-addon"
|
@@ -14,44 +14,48 @@
|
|
14
14
|
"test:ember-compatibility": "ember try:each"
|
15
15
|
},
|
16
16
|
"dependencies": {
|
17
|
-
"@
|
18
|
-
"@
|
19
|
-
"@
|
20
|
-
"
|
21
|
-
"
|
17
|
+
"@ember/string": "^3.0.0",
|
18
|
+
"@embroider/macros": "^1.7.1",
|
19
|
+
"@embroider/util": "^1.7.1",
|
20
|
+
"@glimmer/component": "^1.1.2",
|
21
|
+
"@glimmer/tracking": "^1.1.2",
|
22
|
+
"@projectcaluma/ember-core": "^11.0.0-beta.7",
|
23
|
+
"ember-apollo-client": "^4.0.2",
|
24
|
+
"ember-auto-import": "^2.4.2",
|
22
25
|
"ember-autoresize-modifier": "^0.5.0",
|
23
26
|
"ember-cli-babel": "^7.26.11",
|
24
27
|
"ember-cli-htmlbars": "^6.0.1",
|
25
28
|
"ember-cli-showdown": "^6.0.1",
|
26
29
|
"ember-composable-helpers": "^5.0.0",
|
30
|
+
"ember-concurrency": "^2.2.1",
|
27
31
|
"ember-fetch": "^8.1.1",
|
28
|
-
"ember-in-viewport": "^4.0.
|
32
|
+
"ember-in-viewport": "^4.0.2",
|
29
33
|
"ember-intl": "^5.7.2",
|
30
|
-
"ember-math-helpers": "^2.18.
|
31
|
-
"ember-pikaday": "^
|
32
|
-
"ember-power-select": "^5.0.
|
33
|
-
"ember-resources": "^4.
|
34
|
-
"ember-uikit": "^
|
35
|
-
"ember-validators": "^4.
|
34
|
+
"ember-math-helpers": "^2.18.2",
|
35
|
+
"ember-pikaday": "^4.0.0",
|
36
|
+
"ember-power-select": "^5.0.4",
|
37
|
+
"ember-resources": "^4.8.2",
|
38
|
+
"ember-uikit": "^5.1.3",
|
39
|
+
"ember-validators": "^4.1.2",
|
36
40
|
"graphql": "^15.8.0",
|
37
41
|
"jexl": "^2.3.0",
|
38
42
|
"lodash.isequal": "^4.5.0",
|
39
|
-
"
|
43
|
+
"luxon": "^2.4.0",
|
40
44
|
"tracked-toolbox": "^1.2.3"
|
41
45
|
},
|
42
46
|
"devDependencies": {
|
43
47
|
"@ember/optional-features": "2.0.0",
|
44
|
-
"@ember/test-helpers": "2.
|
45
|
-
"@embroider/test-setup": "
|
46
|
-
"@faker-js/faker": "
|
47
|
-
"@projectcaluma/ember-testing": "
|
48
|
-
"@projectcaluma/ember-workflow": "11.0.0-beta.
|
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.8",
|
52
|
+
"@projectcaluma/ember-workflow": "^11.0.0-beta.7",
|
49
53
|
"broccoli-asset-rev": "3.0.0",
|
50
54
|
"ember-cli": "3.28.5",
|
51
55
|
"ember-cli-code-coverage": "1.0.3",
|
52
|
-
"ember-cli-dependency-checker": "3.
|
56
|
+
"ember-cli-dependency-checker": "3.3.1",
|
53
57
|
"ember-cli-inject-live-reload": "2.1.0",
|
54
|
-
"ember-cli-mirage": "
|
58
|
+
"ember-cli-mirage": "3.0.0-alpha.3",
|
55
59
|
"ember-cli-sri": "2.1.1",
|
56
60
|
"ember-cli-terser": "4.0.2",
|
57
61
|
"ember-disable-prototype-extensions": "1.1.3",
|
@@ -60,16 +64,24 @@
|
|
60
64
|
"ember-maybe-import-regenerator": "1.0.0",
|
61
65
|
"ember-qunit": "5.1.5",
|
62
66
|
"ember-resolver": "8.0.3",
|
63
|
-
"ember-source": "3.28.
|
67
|
+
"ember-source": "3.28.9",
|
64
68
|
"ember-source-channel-url": "3.0.0",
|
65
69
|
"ember-try": "2.0.0",
|
66
70
|
"loader.js": "4.7.0",
|
67
|
-
"miragejs": "0.1.
|
71
|
+
"miragejs": "0.1.45",
|
68
72
|
"npm-run-all": "4.1.5",
|
69
|
-
"qunit": "2.
|
73
|
+
"qunit": "2.19.1",
|
70
74
|
"qunit-dom": "2.0.0",
|
71
75
|
"uuid": "8.3.2",
|
72
|
-
"webpack": "5.
|
76
|
+
"webpack": "5.73.0"
|
77
|
+
},
|
78
|
+
"peerDependencies": {
|
79
|
+
"@projectcaluma/ember-workflow": "^11.0.0-beta.7"
|
80
|
+
},
|
81
|
+
"peerDependenciesMeta": {
|
82
|
+
"@projectcaluma/ember-workflow": {
|
83
|
+
"optional": true
|
84
|
+
}
|
73
85
|
},
|
74
86
|
"engines": {
|
75
87
|
"node": "12.* || 14.* || >= 16"
|
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,7 +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"
|