@projectcaluma/ember-form-builder 10.0.2 → 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 (77) 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 +81 -90
  5. package/addon/components/cfb-form-editor/general.js +15 -11
  6. package/addon/components/cfb-form-editor/question/default.js +11 -12
  7. package/addon/components/cfb-form-editor/question/options.hbs +1 -1
  8. package/addon/components/cfb-form-editor/question/validation.hbs +3 -2
  9. package/addon/components/cfb-form-editor/question/validation.js +17 -13
  10. package/addon/components/cfb-form-editor/question-list/item.hbs +8 -8
  11. package/addon/components/cfb-form-editor/question-list/item.js +2 -2
  12. package/addon/components/cfb-form-editor/question-list.hbs +8 -8
  13. package/addon/components/cfb-form-editor/question-list.js +13 -8
  14. package/addon/components/cfb-form-editor/question.hbs +23 -15
  15. package/addon/components/cfb-form-editor/question.js +22 -20
  16. package/addon/components/cfb-form-editor.hbs +5 -5
  17. package/addon/components/cfb-form-list/item.hbs +1 -1
  18. package/addon/components/cfb-form-list.hbs +69 -72
  19. package/addon/components/cfb-form-list.js +49 -39
  20. package/addon/components/cfb-navigation.hbs +1 -1
  21. package/addon/components/cfb-toggle-switch.hbs +2 -2
  22. package/addon/controllers/index.js +6 -0
  23. package/addon/engine.js +8 -11
  24. package/addon/gql/fragments/field.graphql +23 -1
  25. package/addon/gql/fragments/form-info.graphql +1 -0
  26. package/addon/gql/fragments/question-info.graphql +1 -0
  27. package/addon/gql/mutations/add-form-question.graphql +2 -0
  28. package/addon/gql/mutations/remove-form-question.graphql +2 -0
  29. package/addon/gql/mutations/reorder-form-questions.graphql +2 -0
  30. package/addon/gql/mutations/save-action-button-question.graphql +1 -0
  31. package/addon/gql/mutations/save-calculated-float-question.graphql +1 -0
  32. package/addon/gql/mutations/save-choice-question.graphql +2 -0
  33. package/addon/gql/mutations/save-date-question.graphql +1 -0
  34. package/addon/gql/mutations/save-dynamic-choice-question.graphql +1 -0
  35. package/addon/gql/mutations/save-dynamic-multiple-choice-question.graphql +1 -0
  36. package/addon/gql/mutations/save-file-question.graphql +1 -0
  37. package/addon/gql/mutations/save-float-question.graphql +1 -0
  38. package/addon/gql/mutations/save-form-question.graphql +2 -0
  39. package/addon/gql/mutations/save-form.graphql +1 -0
  40. package/addon/gql/mutations/save-integer-question.graphql +1 -0
  41. package/addon/gql/mutations/save-multiple-choice-question.graphql +2 -0
  42. package/addon/gql/mutations/save-option.graphql +1 -0
  43. package/addon/gql/mutations/save-static-question.graphql +1 -0
  44. package/addon/gql/mutations/save-table-question.graphql +2 -0
  45. package/addon/gql/mutations/save-text-question.graphql +1 -0
  46. package/addon/gql/mutations/save-textarea-question.graphql +1 -0
  47. package/addon/gql/queries/all-format-validators.graphql +10 -0
  48. package/addon/gql/queries/check-form-slug.graphql +1 -0
  49. package/addon/gql/queries/check-question-slug.graphql +1 -0
  50. package/addon/gql/queries/form-editor-general.graphql +1 -0
  51. package/addon/gql/queries/form-editor-question.graphql +21 -0
  52. package/addon/gql/queries/form-list.graphql +1 -0
  53. package/addon/gql/queries/search-form-question.graphql +4 -0
  54. package/addon/gql/queries/search-question.graphql +3 -0
  55. package/addon/instance-initializers/form-builder-widget-overrides.js +15 -0
  56. package/addon/modifiers/pikaday.js +2 -0
  57. package/addon/routes/edit/questions/edit.js +1 -1
  58. package/addon/routes/edit.js +1 -1
  59. package/addon/templates/edit/questions/edit.hbs +1 -1
  60. package/addon/templates/edit/questions/new.hbs +1 -4
  61. package/addon/templates/edit.hbs +5 -5
  62. package/addon/templates/index.hbs +8 -1
  63. package/addon/templates/new.hbs +1 -1
  64. package/addon/utils/and.js +47 -0
  65. package/addon/utils/or.js +40 -0
  66. package/addon/validations/option.js +1 -1
  67. package/addon/validations/question.js +2 -2
  68. package/addon/validators/slug.js +1 -1
  69. package/app/instance-initializers/form-builder-widget-overrides.js +4 -0
  70. package/app/styles/@projectcaluma/ember-form-builder.scss +1 -1
  71. package/app/utils/and.js +1 -0
  72. package/app/utils/or.js +1 -0
  73. package/index.js +6 -4
  74. package/package.json +37 -30
  75. package/translations/de.yaml +5 -5
  76. package/translations/en.yaml +2 -2
  77. package/translations/fr.yaml +154 -1
@@ -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": "10.0.2",
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.0",
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": "^10.0.2",
22
- "@projectcaluma/ember-form": "^10.0.2",
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",
28
- "ember-cli-babel": "^7.26.6",
29
- "ember-cli-htmlbars": "^6.0.0",
30
- "ember-composable-helpers": "^4.5.0",
31
- "ember-concurrency": "^2.2.0",
32
- "ember-concurrency-decorators": "^2.0.3",
29
+ "ember-auto-import": "^2.4.0",
30
+ "ember-changeset": "^4.0.0-beta.5",
31
+ "ember-changeset-validations": "^4.0.0-beta.3",
32
+ "ember-cli-babel": "^7.26.11",
33
+ "ember-cli-htmlbars": "^6.0.1",
34
+ "ember-composable-helpers": "^5.0.0",
35
+ "ember-concurrency": "^2.2.1",
33
36
  "ember-engines-router-service": "^0.3.0",
34
- "ember-fetch": "^8.0.4",
35
- "ember-math-helpers": "^2.18.0",
36
- "ember-pikaday": "^3.0.0",
37
- "ember-power-select": "^4.1.7",
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.0.0",
41
- "graphql": "^15.6.1",
44
+ "ember-uikit": "^5.0.0",
45
+ "ember-validated-form": "^5.3.0",
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.25.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.47.2",
51
- "@projectcaluma/ember-testing": "10.0.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",
53
- "ember-cli": "3.28.4",
59
+ "ember-autoresize-modifier": "^0.5.0",
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.3",
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",
@@ -65,15 +72,15 @@
65
72
  "ember-maybe-import-regenerator": "1.0.0",
66
73
  "ember-qunit": "5.1.5",
67
74
  "ember-resolver": "8.0.3",
68
- "ember-source": "3.28.6",
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.64.1"
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"
@@ -1,9 +1,41 @@
1
1
  caluma:
2
2
  form-builder:
3
+ global:
4
+ save: "Enregistrer"
5
+ loading: "Télécharger"
6
+ cancel: "Annuler"
7
+ search: "Chercher"
8
+ optional: "Facultatif"
9
+
10
+ empty-search: "Aucun résultat trouvé. Adaptez votre recherche pour obtenir de meilleurs résultats."
11
+
12
+ not-found:
13
+ title: "Vous avez l'air perdu"
14
+ subtitle: "La page demandée n'existe pas !"
15
+ home: "Retour au départ"
16
+
17
+ form:
18
+ name: "Nom"
19
+ slug: "Slug"
20
+ description: "Description"
21
+ isArchived: "Archivé"
22
+ widgetOverride: "Élément spécial"
23
+ isPublished: "Publié"
24
+ draft: "Brouillon"
25
+ active: "Actif"
26
+ all: "Tous"
27
+
28
+ allForms: "Tous les formulaires"
29
+ new: "Nouveau formulaire"
30
+ empty: "Nous n'avons trouvé aucun formulaire. Cliquez sur le bouton dans le coin supérieur droit pour créer un formulaire !"
31
+ loadMore: "Télécharger plus de formulaires"
32
+
33
+ not-found: "Aucun formulaire trouvé avec le slug '{slug}'"
34
+
3
35
  question-list:
4
36
  required:
5
37
  label: "Obligatoire (JEXL)"
6
- not-required: "Optionnel"
38
+ not-required: "Facultatif"
7
39
  required: "Obligatoire"
8
40
  conditional: "Conditionnellement obligatoire"
9
41
  hidden:
@@ -13,11 +45,132 @@ caluma:
13
45
  conditional: "Conditionnellement caché"
14
46
 
15
47
  question:
48
+ label: "Étiquette"
49
+ slug: "Slug"
50
+ type: "Type"
51
+ isRequired: "Champ obligatoire"
52
+ staticContent: "Contenu statique"
53
+ infoText: "Texte d'information"
54
+ confirmationText: "Texte de confirmation"
55
+ placeholder: "Caractère générique"
56
+ isHidden: "Caché (JEXL)"
57
+ widgetOverride: "Type d'affichage"
58
+ isArchived: "Archivé"
59
+ type-disabled: "Le type de question ne peut pas être modifié après la création d'une question afin d'éviter les données corrompues."
60
+ supportsMarkdownPrefix: "Ce champ supporte"
61
+ markdown: "Markdown"
62
+ dataSource: "Source des données"
63
+ formatValidators: "Validation"
16
64
  defaultValue: "Valeur par défaut"
65
+ meta: "Méta-informations"
66
+
67
+ general: "Général"
68
+ options: "Options"
69
+
70
+ min-value: "Valeur minimale"
71
+ max-value: "Valeur maximale"
72
+ min-length: "Longueur minimale"
73
+ max-length: "Longueur maximale"
74
+ rowForm: "Formulaire pour les entrées de tableau"
75
+ subForm: "Formulaire pour les entrées"
76
+ no-selection: "Aucune sélection"
17
77
  search-placeholder: "Tapez ici pour rechercher"
18
78
  search-empty: "Pas de formulaires trouvés"
79
+ columnsToDisplay: "Colonnes à afficher dans le formulaire"
80
+ calcExpression: "Formule de calcul (JEXL)"
81
+
82
+ new: "Nouvelle question"
83
+
84
+ minor-info-title: "Important !"
85
+ minor-info: "L'adaptation d'une question ne doit jamais modifier le sens de la question afin de maintenir la cohérence des données."
86
+
87
+ remove: "Supprimer la question"
88
+ add: "Ajouter une question nouvelle ou existante"
89
+ search: "Chercher une question (étiquette ou slug)"
90
+ create: "ou créer une nouvelle question"
91
+ loadMore: "Télécharger plus de questions"
92
+
93
+ empty: "Vous n'avez pas encore ajouté de questions. Appuyez sur le bouton ci-dessus pour le faire !"
94
+ advancedSettings: "Paramètres avancés"
95
+
96
+ types:
97
+ IntegerQuestion: "Nombre entier"
98
+ FloatQuestion: "Nombre à virgule flottante"
99
+ MultipleChoiceQuestion: "Sélection multiple"
100
+ ChoiceQuestion: "Sélection individuel"
101
+ TextQuestion: "Texte"
102
+ TextareaQuestion: "Texte (plusieurs lignes)"
103
+ TableQuestion: "Tableau"
104
+ FormQuestion: "Formulaire"
105
+ FileQuestion: "Fichier"
106
+ StaticQuestion: "Contenu non interactif"
107
+ DateQuestion: "Date"
108
+ DynamicMultipleChoiceQuestion: "Sélection multiple dynamique"
109
+ DynamicChoiceQuestion: "Sélection individuel dynamique"
110
+ CalculatedFloatQuestion: "Calcul (nombre à virgule flottante)"
111
+ ActionButtonQuestion: "Bouton d'action"
112
+
113
+ confirmText: "Texte de confirmation"
114
+ action: "Action"
115
+ color: "Couleur"
116
+ validateOnEnter: "Validation lors de l'entrée dans la fenêtre"
117
+
118
+ actions:
119
+ COMPLETE: "Conclure"
120
+ SKIP: "Sauter"
121
+
122
+ colors:
123
+ PRIMARY: "Primaire"
124
+ SECONDARY: "Secondaire"
125
+ DEFAULT: "Défaut"
126
+
127
+ widgetOverrides:
128
+ powerselect: "Power Select"
129
+ hidden: "Caché"
130
+
131
+ not-found: "Aucune question trouvée avec le slug '{slug}'"
132
+
133
+ hideLabel: "Cacher l'étiquette"
19
134
 
20
135
  options:
21
136
  delete: "Supprimer l'option"
22
137
  archive: "Archiver (masquer) l'option"
23
138
  restore: "Restaurer l'option"
139
+
140
+ notification:
141
+ form:
142
+ save:
143
+ success: "Votre formulaire a été enregistré avec succès !"
144
+ error: "Oups, quelque chose s'est mal passé lors de l'enregistrement du formulaire..."
145
+
146
+ create:
147
+ success: "Votre formulaire a été créé avec succès !"
148
+ error: "Oups, quelque chose s'est mal passé lors de la création du formulaire..."
149
+
150
+ reorder-questions:
151
+ success: "Vos questions ont été triées avec succès !"
152
+ error: "Oups, quelque chose s'est mal passé lors du tri des questions..."
153
+
154
+ reorder-options:
155
+ success: "Vos options ont été triées avec succès !"
156
+ error: "Oups, quelque chose s'est mal passé lors du tri des options..."
157
+
158
+ add-question:
159
+ success: "La question a été ajoutée avec succès à votre formulaire !"
160
+ error: "Oups, quelque chose s'est mal passé lors de l'ajout de la question..."
161
+
162
+ remove-question:
163
+ success: "La question a été supprimée avec succès de votre formulaire !"
164
+ error: "Oups, quelque chose s'est mal passé lors de la suppression de la question..."
165
+
166
+ question:
167
+ save:
168
+ success: "Votre question a été enregistrée avec succès !"
169
+ error: "Oups, quelque chose s'est mal passé lors de l'enregistrement de la question..."
170
+
171
+ validations:
172
+ form:
173
+ slug: "Un formulaire avec ce slug existe déjà"
174
+
175
+ question:
176
+ slug: "Une question avec ce slug existe déjà"