@projectcaluma/ember-form-builder 11.0.0-beta.1 → 11.0.0-beta.10

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 (44) hide show
  1. package/CHANGELOG.md +1152 -0
  2. package/addon/components/cfb-code-editor.hbs +2 -1
  3. package/addon/components/cfb-code-editor.js +53 -8
  4. package/addon/components/cfb-form-editor/general.hbs +2 -4
  5. package/addon/components/cfb-form-editor/general.js +5 -7
  6. package/addon/components/cfb-form-editor/question/options.hbs +1 -1
  7. package/addon/components/cfb-form-editor/question/validation.hbs +3 -2
  8. package/addon/components/cfb-form-editor/question/validation.js +17 -13
  9. package/addon/components/cfb-form-editor/question-list/item.hbs +4 -4
  10. package/addon/components/cfb-form-editor/question-list/item.js +2 -2
  11. package/addon/components/cfb-form-editor/question-list.hbs +6 -6
  12. package/addon/components/cfb-form-editor/question-list.js +11 -6
  13. package/addon/components/cfb-form-editor/question.hbs +23 -14
  14. package/addon/components/cfb-form-editor/question.js +22 -20
  15. package/addon/components/cfb-form-editor.hbs +5 -5
  16. package/addon/components/cfb-form-list/item.hbs +1 -1
  17. package/addon/components/cfb-form-list.hbs +9 -9
  18. package/addon/components/cfb-form-list.js +44 -11
  19. package/addon/components/cfb-toggle-switch.hbs +1 -1
  20. package/addon/controllers/index.js +6 -0
  21. package/addon/engine.js +8 -11
  22. package/addon/gql/queries/all-format-validators.graphql +10 -0
  23. package/addon/gql/queries/form-editor-question.graphql +14 -0
  24. package/addon/instance-initializers/form-builder-widget-overrides.js +15 -0
  25. package/addon/modifiers/pikaday.js +2 -0
  26. package/addon/templates/edit/questions/edit.hbs +1 -1
  27. package/addon/templates/edit/questions/new.hbs +1 -4
  28. package/addon/templates/edit.hbs +5 -5
  29. package/addon/templates/index.hbs +8 -1
  30. package/addon/templates/new.hbs +1 -1
  31. package/addon/utils/and.js +47 -0
  32. package/addon/utils/or.js +40 -0
  33. package/addon/validations/option.js +1 -1
  34. package/addon/validations/question.js +2 -2
  35. package/addon/validators/slug.js +1 -1
  36. package/app/instance-initializers/form-builder-widget-overrides.js +4 -0
  37. package/app/styles/@projectcaluma/ember-form-builder.scss +1 -1
  38. package/app/utils/and.js +1 -0
  39. package/app/utils/or.js +1 -0
  40. package/index.js +6 -4
  41. package/package.json +31 -24
  42. package/translations/de.yaml +5 -5
  43. package/translations/en.yaml +2 -2
  44. package/translations/fr.yaml +154 -1
@@ -1,38 +1,71 @@
1
+ import { inject as service } from "@ember/service";
2
+ import { macroCondition, isTesting } from "@embroider/macros";
1
3
  import Component from "@glimmer/component";
2
- import { tracked } from "@glimmer/tracking";
3
4
  import { timeout, restartableTask } from "ember-concurrency";
4
5
 
5
6
  import { useCalumaQuery } from "@projectcaluma/ember-core/caluma-query";
6
7
  import { allForms } from "@projectcaluma/ember-core/caluma-query/queries";
7
8
 
8
9
  export default class ComponentsCfbFormListComponent extends Component {
10
+ @service intl;
11
+
9
12
  formsQuery = useCalumaQuery(this, allForms, () => ({
10
13
  options: { pageSize: 20 },
11
14
  filter: this.filter,
12
15
  order: [{ attribute: "NAME", direction: "ASC" }],
13
16
  }));
14
17
 
15
- @tracked category = "active";
16
- @tracked search = "";
18
+ get categories() {
19
+ return [
20
+ {
21
+ value: "active",
22
+ label: this.intl.t("caluma.form-builder.form.active"),
23
+ },
24
+ {
25
+ value: "archived",
26
+ label: this.intl.t("caluma.form-builder.form.isArchived"),
27
+ },
28
+ {
29
+ value: "published",
30
+ label: this.intl.t("caluma.form-builder.form.isPublished"),
31
+ },
32
+ {
33
+ value: "unpublished",
34
+ label: this.intl.t("caluma.form-builder.form.draft"),
35
+ },
36
+ { value: "all", label: this.intl.t("caluma.form-builder.form.all") },
37
+ ];
38
+ }
17
39
 
18
40
  get filter() {
19
41
  const isArchived =
20
- this.category === "active"
42
+ this.args.category === "active"
21
43
  ? { isArchived: false }
22
- : this.category === "archived"
44
+ : this.args.category === "archived"
23
45
  ? { isArchived: true }
24
46
  : null;
25
47
 
26
- const search = this.search ? { search: this.search } : null;
48
+ const search = this.args.search ? { search: this.args.search } : null;
49
+
50
+ const isPublished =
51
+ this.args.category === "unpublished"
52
+ ? { isPublished: false }
53
+ : this.args.category === "published"
54
+ ? { isPublished: true }
55
+ : null;
27
56
 
28
- return [isArchived, search].filter(Boolean) || null;
57
+ return [isArchived, isPublished, search].filter(Boolean) || null;
29
58
  }
30
59
 
31
60
  @restartableTask
32
- *setFilter(name, eventOrValue) {
33
- yield timeout(500);
61
+ *search(event) {
62
+ /* istanbul ignore next */
63
+ if (macroCondition(isTesting())) {
64
+ // no timeout
65
+ } else {
66
+ yield timeout(500);
67
+ }
34
68
 
35
- this[name] =
36
- eventOrValue instanceof Event ? eventOrValue.target.value : eventOrValue;
69
+ this.args.onUpdateSearch(event.target.value);
37
70
  }
38
71
  }
@@ -7,7 +7,7 @@
7
7
  @size={{@size}}
8
8
  @name={{@name}}
9
9
  @disabled={{@disabled}}
10
- @on-toggle={{@update}}
10
+ @onToggle={{@update}}
11
11
  />
12
12
  </div>
13
13
 
@@ -1,10 +1,16 @@
1
1
  import Controller from "@ember/controller";
2
2
  import { action } from "@ember/object";
3
3
  import { inject as service } from "@ember/service";
4
+ import { tracked } from "@glimmer/tracking";
4
5
 
5
6
  export default class IndexController extends Controller {
6
7
  @service router;
7
8
 
9
+ queryParams = ["search", "category"];
10
+
11
+ @tracked search = "";
12
+ @tracked category = "active";
13
+
8
14
  @action
9
15
  newForm() {
10
16
  this.router.transitionTo("new");
package/addon/engine.js CHANGED
@@ -6,16 +6,13 @@ import config from "./config/environment";
6
6
 
7
7
  const { modulePrefix } = config;
8
8
 
9
- /* eslint-disable ember/avoid-leaking-state-in-ember-objects */
10
- const Eng = Engine.extend({
11
- modulePrefix,
12
- Resolver,
9
+ export default class FormBuilderEngine extends Engine {
10
+ modulePrefix = modulePrefix;
11
+ Resolver = Resolver;
13
12
 
14
- dependencies: {
15
- services: ["apollo", "notification", "intl", "caluma-options", "validator"],
16
- },
17
- });
13
+ dependencies = {
14
+ services: ["apollo", "notification", "intl", "caluma-options"],
15
+ };
16
+ }
18
17
 
19
- loadInitializers(Eng, modulePrefix);
20
-
21
- export default Eng;
18
+ loadInitializers(FormBuilderEngine, modulePrefix);
@@ -0,0 +1,10 @@
1
+ query AllFormatValidators {
2
+ allFormatValidators {
3
+ edges {
4
+ node {
5
+ slug
6
+ name
7
+ }
8
+ }
9
+ }
10
+ }
@@ -33,11 +33,25 @@ query FormEditorQuestion($slug: String!) {
33
33
  id
34
34
  stringValue: value
35
35
  }
36
+ formatValidators {
37
+ edges {
38
+ node {
39
+ slug
40
+ }
41
+ }
42
+ }
36
43
  }
37
44
  ... on TextareaQuestion {
38
45
  minLength
39
46
  maxLength
40
47
  placeholder
48
+ formatValidators {
49
+ edges {
50
+ node {
51
+ slug
52
+ }
53
+ }
54
+ }
41
55
  defaultAnswer {
42
56
  id
43
57
  stringValue: value
@@ -0,0 +1,15 @@
1
+ import DefaultTableComponent from "@projectcaluma/ember-form-builder/components/cfb-form-editor/question/default/table";
2
+
3
+ export function initialize(appInstance) {
4
+ const options = appInstance.lookup("service:caluma-options");
5
+
6
+ options.registerComponentOverride({
7
+ component: "cfb-form-editor/question/default/table",
8
+ componentClass: DefaultTableComponent,
9
+ types: [],
10
+ });
11
+ }
12
+
13
+ export default {
14
+ initialize,
15
+ };
@@ -0,0 +1,2 @@
1
+ import "ember-pikaday/pikaday.css";
2
+ export { default } from "ember-pikaday/modifiers/pikaday";
@@ -1,5 +1,5 @@
1
1
  <CfbFormEditor::Question
2
2
  @slug={{@model.questionSlug}}
3
3
  @form={{@model.formSlug}}
4
- @on-after-submit={{this.afterSubmit}}
4
+ @onAfterSubmit={{this.afterSubmit}}
5
5
  />
@@ -1,4 +1 @@
1
- <CfbFormEditor::Question
2
- @form={{@model}}
3
- @on-after-submit={{this.afterSubmit}}
4
- />
1
+ <CfbFormEditor::Question @form={{@model}} @onAfterSubmit={{this.afterSubmit}} />
@@ -1,10 +1,10 @@
1
1
  <CfbFormEditor
2
2
  @slug={{@model}}
3
- @on-edit-question={{this.editQuestion}}
4
- @on-create-question={{this.createQuestion}}
5
- @on-after-add-question={{this.editQuestion}}
6
- @on-after-remove-question={{this.afterRemoveQuestion}}
7
- @on-click-form={{this.clickForm}}
3
+ @onEditQuestion={{this.editQuestion}}
4
+ @onCreateQuestion={{this.createQuestion}}
5
+ @onAfterAddQuestion={{this.editQuestion}}
6
+ @onAfterRemoveQuestion={{this.afterRemoveQuestion}}
7
+ @onClickForm={{this.clickForm}}
8
8
  >
9
9
  {{outlet}}
10
10
  </CfbFormEditor>
@@ -1 +1,8 @@
1
- <CfbFormList @on-new-form={{this.newForm}} @on-edit-form={{this.editForm}} />
1
+ <CfbFormList
2
+ @search={{this.search}}
3
+ @category={{this.category}}
4
+ @onNewForm={{this.newForm}}
5
+ @onEditForm={{this.editForm}}
6
+ @onUpdateSearch={{fn (mut this.search)}}
7
+ @onUpdateCategory={{fn (mut this.category)}}
8
+ />
@@ -1,6 +1,6 @@
1
1
  <CfbFormEditor @slug={{@model}}>
2
2
  <CfbFormEditor::General
3
3
  @slug={{@model}}
4
- @on-after-submit={{this.afterSubmit}}
4
+ @onAfterSubmit={{this.afterSubmit}}
5
5
  />
6
6
  </CfbFormEditor>
@@ -0,0 +1,47 @@
1
+ import { typeOf } from "@ember/utils";
2
+ import { isPromise } from "validated-changeset";
3
+
4
+ function notTrue(value) {
5
+ return typeOf(value) !== "boolean" || !value;
6
+ }
7
+
8
+ function handleResult(result) {
9
+ if (notTrue(result)) throw result;
10
+ return true;
11
+ }
12
+
13
+ /**
14
+ * Accepts an array of ember-changeset-validations validation functions.
15
+ *
16
+ * Copied and updated from nucleartide/ember-changeset-hofs
17
+ * @module and
18
+ */
19
+ export default function and(...validators) {
20
+ return (key, newValue, oldValue, changes, object) => {
21
+ for (let i = 0; i < validators.length; i++) {
22
+ const validation = validators[i](
23
+ key,
24
+ newValue,
25
+ oldValue,
26
+ changes,
27
+ object
28
+ );
29
+
30
+ if (isPromise(validation)) {
31
+ let promise = validation.then(handleResult);
32
+
33
+ for (let j = i + 1; j < validators.length; j++) {
34
+ promise = promise
35
+ .then(() => validators[j](key, newValue, oldValue, changes, object))
36
+ .then(handleResult);
37
+ }
38
+
39
+ return promise.catch((err) => err);
40
+ }
41
+
42
+ if (notTrue(validation)) return validation;
43
+ }
44
+
45
+ return true;
46
+ };
47
+ }
@@ -0,0 +1,40 @@
1
+ import { isPromise } from "validated-changeset";
2
+
3
+ function isTrue(value) {
4
+ return value === true;
5
+ }
6
+
7
+ function handleResult(result) {
8
+ if (isTrue(result)) throw true;
9
+ return result;
10
+ }
11
+
12
+ /**
13
+ * Copied and updated from nucleartide/ember-changeset-hofs
14
+ * @module or
15
+ */
16
+ export default function or(...validators) {
17
+ return (key, newValue, oldValue, changes, object) => {
18
+ let validation;
19
+
20
+ for (let i = 0; i < validators.length; i++) {
21
+ validation = validators[i](key, newValue, oldValue, changes, object);
22
+
23
+ if (isPromise(validation)) {
24
+ let promise = validation.then(handleResult);
25
+
26
+ for (let j = i + 1; j < validators.length; j++) {
27
+ promise = promise
28
+ .then(() => validators[j](key, newValue, oldValue, changes, object))
29
+ .then(handleResult);
30
+ }
31
+
32
+ return promise.catch((err) => err);
33
+ }
34
+
35
+ if (isTrue(validation)) return true;
36
+ }
37
+
38
+ return validation;
39
+ };
40
+ }
@@ -3,7 +3,7 @@ import {
3
3
  validateLength,
4
4
  } from "ember-changeset-validations/validators";
5
5
 
6
- import and from "@projectcaluma/ember-core/utils/and";
6
+ import and from "@projectcaluma/ember-form-builder/utils/and";
7
7
  import validateSlug from "@projectcaluma/ember-form-builder/validators/slug";
8
8
 
9
9
  export default {
@@ -7,8 +7,8 @@ import {
7
7
  import validateGtLt from "../validators/gt-lt";
8
8
  import validateOptions from "../validators/options";
9
9
 
10
- import and from "@projectcaluma/ember-core/utils/and";
11
- import or from "@projectcaluma/ember-core/utils/or";
10
+ import and from "@projectcaluma/ember-form-builder/utils/and";
11
+ import or from "@projectcaluma/ember-form-builder/utils/or";
12
12
  import validateSlug from "@projectcaluma/ember-form-builder/validators/slug";
13
13
  import validateType from "@projectcaluma/ember-form-builder/validators/type";
14
14
 
@@ -4,7 +4,7 @@ import {
4
4
  validateFormat,
5
5
  } from "ember-changeset-validations/validators";
6
6
 
7
- import and from "@projectcaluma/ember-core/utils/and";
7
+ import and from "@projectcaluma/ember-form-builder/utils/and";
8
8
 
9
9
  const validateSlug = () =>
10
10
  and(
@@ -0,0 +1,4 @@
1
+ export {
2
+ default,
3
+ initialize,
4
+ } from "@projectcaluma/ember-form-builder/instance-initializers/form-builder-widget-overrides";
@@ -22,7 +22,7 @@
22
22
  .cfb-code-editor {
23
23
  font-family: $base-code-font-family;
24
24
  letter-spacing: normal;
25
- height: 70px;
25
+ min-height: 70px;
26
26
  line-height: 16px;
27
27
  tab-size: 4;
28
28
  }
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-form-builder/utils/and";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-form-builder/utils/or";
package/index.js CHANGED
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  // eslint-disable-next-line node/no-unpublished-require
4
- const EngineAddon = require("ember-engines/lib/engine-addon");
4
+ const { buildEngine } = require("ember-engines/lib/engine-addon");
5
5
 
6
- /* eslint-disable ember/avoid-leaking-state-in-ember-objects */
7
- module.exports = EngineAddon.extend({
6
+ module.exports = buildEngine({
8
7
  name: require("./package.json").name,
9
- lazyLoading: false,
8
+
9
+ lazyLoading: {
10
+ enabled: false,
11
+ },
10
12
 
11
13
  included(...args) {
12
14
  this._super.included.apply(this, args);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcaluma/ember-form-builder",
3
- "version": "11.0.0-beta.1",
3
+ "version": "11.0.0-beta.10",
4
4
  "description": "Ember engine for building Caluma forms.",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -14,50 +14,57 @@
14
14
  "test:ember": "ember test",
15
15
  "test:ember-compatibility": "ember try:each"
16
16
  },
17
+ "peerDependencies": {
18
+ "ember-engines": ">= 0.8"
19
+ },
17
20
  "dependencies": {
18
- "@ember/render-modifiers": "^2.0.2",
21
+ "@ember/render-modifiers": "^2.0.4",
22
+ "@embroider/macros": "^1.5.0",
19
23
  "@glimmer/component": "^1.0.4",
20
24
  "@glimmer/tracking": "^1.0.4",
21
- "@projectcaluma/ember-core": "^11.0.0-beta.1",
22
- "@projectcaluma/ember-form": "^11.0.0-beta.1",
25
+ "@projectcaluma/ember-core": "^11.0.0-beta.5",
26
+ "@projectcaluma/ember-form": "^11.0.0-beta.13",
23
27
  "codejar": "^3.5.0",
24
28
  "ember-apollo-client": "^3.2.0",
25
- "ember-auto-import": "^2.2.3",
26
- "ember-changeset": "^3.15.0",
27
- "ember-changeset-validations": "^3.16.0",
29
+ "ember-auto-import": "^2.4.0",
30
+ "ember-changeset": "^4.0.0-beta.5",
31
+ "ember-changeset-validations": "^4.0.0-beta.3",
28
32
  "ember-cli-babel": "^7.26.11",
29
33
  "ember-cli-htmlbars": "^6.0.1",
30
34
  "ember-composable-helpers": "^5.0.0",
31
- "ember-concurrency": "^2.2.0",
35
+ "ember-concurrency": "^2.2.1",
32
36
  "ember-engines-router-service": "^0.3.0",
33
- "ember-fetch": "^8.0.4",
34
- "ember-math-helpers": "^2.18.0",
35
- "ember-pikaday": "^3.0.0",
36
- "ember-power-select": "^5.0.3",
37
- "ember-resources": "^4.1.3",
37
+ "ember-fetch": "^8.1.1",
38
+ "ember-intl": "^5.7.2",
39
+ "ember-math-helpers": "^2.18.1",
40
+ "ember-pikaday": "^4.0.0",
41
+ "ember-power-select": "^5.0.4",
42
+ "ember-resources": "^4.4.0",
38
43
  "ember-test-selectors": "^6.0.0",
39
- "ember-uikit": "^4.0.0",
40
- "ember-validated-form": "^5.1.1",
44
+ "ember-uikit": "^5.0.0",
45
+ "ember-validated-form": "^5.3.0",
41
46
  "graphql": "^15.8.0",
42
47
  "graphql-tag": "^2.12.6",
43
48
  "jexl": "^2.3.0",
44
- "moment": "^2.29.1",
45
- "prismjs": "^1.26.0"
49
+ "prismjs": "^1.27.0"
46
50
  },
51
+ "//": "TODO: remove ember-data when https://github.com/ember-engines/ember-engines/pull/794 is released",
47
52
  "devDependencies": {
48
53
  "@ember/optional-features": "2.0.0",
49
54
  "@ember/test-helpers": "2.6.0",
50
- "@embroider/test-setup": "0.49.0",
51
- "@projectcaluma/ember-testing": "10.1.0",
55
+ "@embroider/test-setup": "1.5.0",
56
+ "@faker-js/faker": "6.0.0-beta.0",
57
+ "@projectcaluma/ember-testing": "11.0.0-beta.4",
52
58
  "broccoli-asset-rev": "3.0.0",
59
+ "ember-autoresize-modifier": "^0.5.0",
53
60
  "ember-cli": "3.28.5",
54
61
  "ember-cli-code-coverage": "1.0.3",
55
62
  "ember-cli-dependency-checker": "3.2.0",
56
63
  "ember-cli-inject-live-reload": "2.1.0",
57
- "ember-cli-mirage": "2.2.0",
64
+ "ember-cli-mirage": "3.0.0-alpha.2",
58
65
  "ember-cli-sri": "2.1.1",
59
66
  "ember-cli-terser": "4.0.2",
60
- "ember-data": "3.28.7",
67
+ "ember-data": "3.28.8",
61
68
  "ember-disable-prototype-extensions": "1.1.3",
62
69
  "ember-engines": "0.8.20",
63
70
  "ember-export-application-global": "2.0.1",
@@ -68,12 +75,12 @@
68
75
  "ember-source": "3.28.8",
69
76
  "ember-source-channel-url": "3.0.0",
70
77
  "ember-try": "2.0.0",
71
- "faker": "5.5.3",
72
78
  "loader.js": "4.7.0",
79
+ "miragejs": "0.1.43",
73
80
  "npm-run-all": "4.1.5",
74
- "qunit": "2.17.2",
81
+ "qunit": "2.18.0",
75
82
  "qunit-dom": "2.0.0",
76
- "webpack": "5.65.0"
83
+ "webpack": "5.70.0"
77
84
  },
78
85
  "engines": {
79
86
  "node": "12.* || 14.* || >= 16"
@@ -10,7 +10,7 @@ caluma:
10
10
  empty-search: "Keine Resultate gefunden. Passen Sie Ihre Suche an um bessere Resultate zu erhalten."
11
11
 
12
12
  not-found:
13
- title: "Du siehst verloren aus"
13
+ title: "Sie sehen verloren aus"
14
14
  subtitle: "Die angefrage Seite existiert nicht!"
15
15
  home: "Zurück zum Start"
16
16
 
@@ -21,14 +21,13 @@ caluma:
21
21
  isArchived: "Archiviert"
22
22
  widgetOverride: "Spezialelement"
23
23
  isPublished: "Publiziert"
24
- archived: "Archivierte"
25
24
  draft: "Entwurf"
26
- active: "Aktive"
25
+ active: "Aktiv"
27
26
  all: "Alle"
28
27
 
29
28
  allForms: "Alle Formulare"
30
29
  new: "Neues Formular"
31
- empty: "Wir haben keine Formulare gefunden. Klicken Sie den Knopf im der rechten oberen Ecke um ein Formular zu Erstellen!"
30
+ empty: "Wir haben keine Formulare gefunden. Klicken Sie den Knopf im der rechten oberen Ecke um ein Formular zu erstellen!"
32
31
  loadMore: "Mehr Formulare laden"
33
32
 
34
33
  not-found: "Kein Formular mit dem Slug '{slug}' gefunden"
@@ -63,6 +62,7 @@ caluma:
63
62
  dataSource: "Datenquelle"
64
63
  formatValidators: "Validierung"
65
64
  defaultValue: "Standardwert"
65
+ meta: "Metainformationen"
66
66
 
67
67
  general: "Allgemein"
68
68
  options: "Optionen"
@@ -73,7 +73,7 @@ caluma:
73
73
  max-length: "Maximale Länge"
74
74
  rowForm: "Formular für Tabelleneinträge"
75
75
  subForm: "Formular für Einträge"
76
- choose: "-- bitte wählen --"
76
+ no-selection: "Keine Auswahl"
77
77
  search-placeholder: "Hier tippen um zu suchen"
78
78
  search-empty: "Keine Formulare gefunden"
79
79
  columnsToDisplay: "Spalten zur Anzeige im Formular"
@@ -21,7 +21,6 @@ caluma:
21
21
  isArchived: "Archived"
22
22
  widgetOverride: "Custom widget"
23
23
  isPublished: "Published"
24
- archived: "Archived"
25
24
  draft: "Draft"
26
25
  active: "Active"
27
26
  all: "All"
@@ -63,6 +62,7 @@ caluma:
63
62
  dataSource: "Data source"
64
63
  formatValidators: "Validation"
65
64
  defaultValue: "Default value"
65
+ meta: "Meta information"
66
66
 
67
67
  general: "General"
68
68
  options: "Options"
@@ -73,7 +73,7 @@ caluma:
73
73
  max-length: "Maximum length"
74
74
  rowForm: "Form to use for rows"
75
75
  subForm: "Form to use for entries"
76
- choose: "-- please choose --"
76
+ no-selection: "No selection"
77
77
  search-placeholder: "Type here to search forms"
78
78
  search-empty: "Search didn't match any forms"
79
79
  columnsToDisplay: "Columns to be shown in the form"