@projectcaluma/ember-form-builder 11.0.0-beta.27 → 11.0.0-beta.29

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.
@@ -1,12 +1,27 @@
1
- {{component @labelComponent}}
1
+ <div class="uk-margin">
2
+ <@labelComponent />
2
3
 
3
- <div
4
- name={{@name}}
5
- class="uk-textarea cfb-code-editor {{concat 'language-' @language}}"
6
- {{did-insert this.didInsertNode}}
7
- {{will-destroy this.willDestroyNode}}
8
- {{autoresize mode="height"}}
9
- ></div>
4
+ <div class="uk-form-controls">
5
+ <div
6
+ name={{@name}}
7
+ class="uk-textarea cfb-code-editor {{concat 'language-' @language}}"
8
+ {{did-insert this.didInsertNode}}
9
+ {{will-destroy this.willDestroyNode}}
10
+ {{autoresize mode="height"}}
11
+ ></div>
12
+ </div>
10
13
 
11
- {{component @hintComponent}}
12
- {{component @errorComponent}}
14
+ {{#if (eq @language "markdown")}}
15
+ <small class="uk-text-muted">
16
+ {{t "caluma.form-builder.question.supportsMarkdownPrefix"}}
17
+ <a
18
+ target="_blank"
19
+ rel="noopener noreferrer"
20
+ href="https://www.markdownguide.org/basic-syntax"
21
+ >{{t "caluma.form-builder.question.markdown"}}</a>
22
+ </small>
23
+ {{/if}}
24
+
25
+ <@hintComponent />
26
+ <@errorComponent />
27
+ </div>
@@ -1,13 +1,15 @@
1
1
  <div class="uk-margin">
2
- {{component @labelComponent}}
2
+ <@labelComponent />
3
3
 
4
- {{component
5
- (get-widget this.field.question)
6
- field=this.field
7
- disabled=false
8
- onSave=this.onUpdate
9
- }}
4
+ <div class="uk-form-controls">
5
+ {{component
6
+ (get-widget this.field.question)
7
+ field=this.field
8
+ disabled=false
9
+ onSave=this.onUpdate
10
+ }}
11
+ </div>
10
12
 
11
- {{component @hintComponent}}
12
- {{component @errorComponent}}
13
+ <@hintComponent />
14
+ <@errorComponent />
13
15
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class="uk-margin">
2
- {{component @labelComponent}}
2
+ <@labelComponent />
3
3
 
4
4
  <UkSortable
5
5
  @handle=".uk-sortable-handle"
@@ -84,6 +84,6 @@
84
84
  </li>
85
85
  </UkSortable>
86
86
 
87
- {{component @hintComponent}}
88
- {{component @errorComponent}}
87
+ <@hintComponent />
88
+ <@errorComponent />
89
89
  </div>
@@ -1,17 +1,19 @@
1
1
  <div class="uk-margin">
2
- {{component @labelComponent}}
2
+ <@labelComponent />
3
3
 
4
- <PowerSelectMultiple
5
- @selected={{this.selected}}
6
- @placeholder={{@placeholder}}
7
- @options={{this.validators}}
8
- @onChange={{this.updateValidators}}
9
- @renderInPlace={{true}}
10
- as |item|
11
- >
12
- {{item.name}}
13
- </PowerSelectMultiple>
4
+ <div class="uk-form-controls">
5
+ <PowerSelectMultiple
6
+ @selected={{this.selected}}
7
+ @placeholder={{@placeholder}}
8
+ @options={{this.validators}}
9
+ @onChange={{this.updateValidators}}
10
+ @renderInPlace={{true}}
11
+ as |item|
12
+ >
13
+ {{item.name}}
14
+ </PowerSelectMultiple>
15
+ </div>
14
16
 
15
- {{component @hintComponent}}
16
- {{component @errorComponent}}
17
+ <@hintComponent />
18
+ <@errorComponent />
17
19
  </div>
@@ -9,35 +9,33 @@
9
9
  ...attributes
10
10
  >
11
11
  <div class="uk-flex uk-flex-middle">
12
- <span class="uk-width-auto uk-margin-small-right">
13
- {{#if (eq @mode "reorder")}}
14
- <i
15
- role="button"
16
- data-test-sort-handle
17
- uk-icon="menu"
18
- class="uk-sortable-handle"
19
- >
20
- </i>
21
- {{else if (eq @mode "remove")}}
22
- <i
23
- role="button"
24
- data-test-remove-item
25
- uk-icon="minus"
26
- class="cfb-pointer uk-text-danger"
27
- {{on "click" (fn (optional @onRemoveQuestion) @question)}}
28
- >
29
- </i>
30
- {{else if (eq @mode "add")}}
31
- <i
32
- role="button"
33
- data-test-add-item
34
- uk-icon="plus"
35
- class="cfb-pointer uk-text-success"
36
- {{on "click" (fn (optional @onAddQuestion) @question)}}
37
- >
38
- </i>
39
- {{/if}}
40
- </span>
12
+ {{#if (eq @mode "reorder")}}
13
+ <i
14
+ role="button"
15
+ data-test-sort-handle
16
+ uk-icon="menu"
17
+ class="uk-sortable-handle uk-margin-small-right"
18
+ >
19
+ </i>
20
+ {{else if (eq @mode "remove")}}
21
+ <i
22
+ role="button"
23
+ data-test-remove-item
24
+ uk-icon="minus"
25
+ class="cfb-pointer uk-text-danger uk-margin-small-right"
26
+ {{on "click" (fn (optional @onRemoveQuestion) @question)}}
27
+ >
28
+ </i>
29
+ {{else if (eq @mode "add")}}
30
+ <i
31
+ role="button"
32
+ data-test-add-item
33
+ uk-icon="plus"
34
+ class="cfb-pointer uk-text-success uk-margin-small-right"
35
+ {{on "click" (fn (optional @onAddQuestion) @question)}}
36
+ >
37
+ </i>
38
+ {{/if}}
41
39
 
42
40
  {{#if (eq @mode "reorder")}}
43
41
  <a
@@ -113,26 +113,11 @@
113
113
  {{/if}}
114
114
 
115
115
  {{#if (has-question-type f.model "static")}}
116
- <div class="uk-margin">
117
- <f.input
118
- @label={{t "caluma.form-builder.question.staticContent"}}
119
- @name="staticContent"
120
- @renderComponent={{component
121
- "cfb-code-editor"
122
- language="markdown"
123
- className="uk-margin-remove-bottom"
124
- }}
125
- class="uk-margin-remove-bottom"
126
- />
127
- <small class="uk-text-muted">
128
- {{t "caluma.form-builder.question.supportsMarkdownPrefix"}}
129
- <a
130
- target="_blank"
131
- rel="noopener noreferrer"
132
- href="https://www.markdownguide.org/basic-syntax"
133
- >{{t "caluma.form-builder.question.markdown"}}</a>
134
- </small>
135
- </div>
116
+ <f.input
117
+ @label={{t "caluma.form-builder.question.staticContent"}}
118
+ @name="staticContent"
119
+ @renderComponent={{component "cfb-code-editor" language="markdown"}}
120
+ />
136
121
  {{/if}}
137
122
 
138
123
  {{#if (has-question-type f.model "action-button")}}
@@ -143,25 +128,11 @@
143
128
  {{autoresize mode="height"}}
144
129
  />
145
130
  {{else}}
146
- <div class="uk-margin">
147
- <f.input
148
- @label={{t "caluma.form-builder.question.infoText"}}
149
- @name="infoText"
150
- @renderComponent={{component
151
- "cfb-code-editor"
152
- language="markdown"
153
- className="uk-margin-remove-bottom"
154
- }}
155
- />
156
- <small class="uk-text-muted">
157
- {{t "caluma.form-builder.question.supportsMarkdownPrefix"}}
158
- <a
159
- target="_blank"
160
- rel="noopener noreferrer"
161
- href="https://www.markdownguide.org/basic-syntax"
162
- >{{t "caluma.form-builder.question.markdown"}}</a>
163
- </small>
164
- </div>
131
+ <f.input
132
+ @label={{t "caluma.form-builder.question.infoText"}}
133
+ @name="infoText"
134
+ @renderComponent={{component "cfb-code-editor" language="markdown"}}
135
+ />
165
136
  {{/if}}
166
137
 
167
138
  {{#if (not (has-question-type f.model "action-button" "static" "form"))}}
@@ -250,17 +221,18 @@
250
221
  <div uk-grid class="uk-grid-small uk-child-width-1-2 uk-margin">
251
222
  <div>
252
223
  <f.input
224
+ @type="number"
253
225
  @name="floatMinValue"
254
226
  @label={{t "caluma.form-builder.question.min-value"}}
255
- @renderComponent={{component "cfb-float-input"}}
227
+ step="any"
256
228
  />
257
229
  </div>
258
-
259
230
  <div>
260
231
  <f.input
232
+ @type="number"
261
233
  @name="floatMaxValue"
262
234
  @label={{t "caluma.form-builder.question.max-value"}}
263
- @renderComponent={{component "cfb-float-input"}}
235
+ step="any"
264
236
  />
265
237
  </div>
266
238
  </div>
@@ -367,33 +339,12 @@
367
339
  </div>
368
340
 
369
341
  {{#if @slug}}
370
- <div class="uk-margin">
371
- <f.input
372
- @name="meta.columnsToDisplay"
373
- @label={{t "caluma.form-builder.question.columnsToDisplay"}}
374
- >
375
- {{#each this.model.rowForm.questions.edges as |rowEdge|}}
376
- {{#let rowEdge.node as |row|}}
377
- <label>
378
- <input
379
- type="checkbox"
380
- value={{row.slug}}
381
- checked={{includes
382
- row.slug
383
- this.model.meta.columnsToDisplay
384
- }}
385
- class="uk-checkbox uk-margin-small-right"
386
- {{on
387
- "change"
388
- (fn this.toggleColumnToDisplay row.slug f.model)
389
- }}
390
- />
391
- {{row.label}}
392
- </label>
393
- {{/let}}
394
- {{/each}}
395
- </f.input>
396
- </div>
342
+ <f.input
343
+ @type="checkbox-group"
344
+ @name="meta.columnsToDisplay"
345
+ @label={{t "caluma.form-builder.question.columnsToDisplay"}}
346
+ @options={{this.columnsToDisplayOptions}}
347
+ />
397
348
  {{/if}}
398
349
  {{/if}}
399
350
 
@@ -478,13 +429,11 @@
478
429
  />
479
430
  {{/if}}
480
431
 
481
- <div class="uk-margin">
482
- <f.input
483
- @label={{t "caluma.form-builder.question.isHidden"}}
484
- @name="isHidden"
485
- @renderComponent={{component "cfb-code-editor" language="jexl"}}
486
- />
487
- </div>
432
+ <f.input
433
+ @label={{t "caluma.form-builder.question.isHidden"}}
434
+ @name="isHidden"
435
+ @renderComponent={{component "cfb-code-editor" language="jexl"}}
436
+ />
488
437
 
489
438
  {{#if
490
439
  (not
@@ -493,22 +442,18 @@
493
442
  )
494
443
  )
495
444
  }}
496
- <div class="uk-margin">
497
- <f.input
498
- @label={{t "caluma.form-builder.question.isRequired"}}
499
- @name="isRequired"
500
- @renderComponent={{component "cfb-code-editor" language="jexl"}}
501
- />
502
- </div>
503
- {{/if}}
504
-
505
- <div class="uk-margin">
506
445
  <f.input
507
- @label={{t "caluma.form-builder.question.meta"}}
508
- @name="meta"
509
- @renderComponent={{component "cfb-code-editor" language="json"}}
446
+ @label={{t "caluma.form-builder.question.isRequired"}}
447
+ @name="isRequired"
448
+ @renderComponent={{component "cfb-code-editor" language="jexl"}}
510
449
  />
511
- </div>
450
+ {{/if}}
451
+
452
+ <f.input
453
+ @label={{t "caluma.form-builder.question.meta"}}
454
+ @name="meta"
455
+ @renderComponent={{component "cfb-code-editor" language="json"}}
456
+ />
512
457
  {{/if}}
513
458
 
514
459
  <div class="uk-text-right">
@@ -204,6 +204,13 @@ export default class CfbFormEditorQuestion extends Component {
204
204
  : "";
205
205
  }
206
206
 
207
+ get columnsToDisplayOptions() {
208
+ return this.model.rowForm?.questions.edges.map((edge) => ({
209
+ key: edge.node.slug,
210
+ label: edge.node.label,
211
+ }));
212
+ }
213
+
207
214
  getInput(changeset) {
208
215
  const slug =
209
216
  ((!this.args.slug && this.prefix) || "") + changeset.get("slug");
@@ -496,19 +503,6 @@ export default class CfbFormEditorQuestion extends Component {
496
503
  this.validateSlug.perform(this.prefix + value, changeset);
497
504
  }
498
505
 
499
- /*
500
- * This function adds the selected slugs to the columns to display
501
- * list if it isnt present, otherwise it will remove the slug.
502
- */
503
- @action
504
- toggleColumnToDisplay(value, changeset) {
505
- const displayed = new Set(changeset.get("meta.columnsToDisplay"));
506
-
507
- displayed.delete(value) || displayed.add(value);
508
-
509
- changeset.set("meta.columnsToDisplay", [...displayed]);
510
- }
511
-
512
506
  @action
513
507
  updateSubForm(value, changeset) {
514
508
  changeset.set("subForm.slug", value.slug);
@@ -1,47 +1,26 @@
1
- import getMessages from "ember-changeset-validations/utils/get-messages";
2
- import buildMessage from "ember-changeset-validations/utils/validation-errors";
1
+ import { validateNumber } from "ember-changeset-validations/validators";
3
2
 
4
- export default function validateGtLt(options = { gt: null, lt: null }) {
3
+ export default function validateGtLt(options = {}) {
5
4
  return (key, newValue, oldValue, changes, content) => {
6
- newValue = Number(newValue);
7
-
8
- if (!newValue) {
9
- return true;
10
- }
11
-
12
- const messages = getMessages();
13
5
  const data = { ...content, ...changes };
14
6
 
15
- if (options.gt) {
16
- const dependentValue = data[options.gt];
17
-
18
- return dependentValue
19
- ? Number(newValue) > Number(dependentValue) ||
20
- buildMessage(key, {
21
- type: "greaterThan",
22
- value: newValue,
23
- context: {
24
- gt: messages.getDescriptionFor(options.gt),
25
- },
26
- })
27
- : true;
28
- }
7
+ const parsedOptions = Object.entries(options).reduce((parsed, [k, v]) => {
8
+ const value =
9
+ /^(g|l)t(e)?$/.test(k) && typeof v === "string" ? data[v] : v;
29
10
 
30
- if (options.lt) {
31
- const dependentValue = data[options.lt];
11
+ if (value) {
12
+ return { ...parsed, [k]: value };
13
+ }
32
14
 
33
- return dependentValue
34
- ? Number(newValue) < Number(dependentValue) ||
35
- buildMessage(key, {
36
- type: "lessThan",
37
- value: newValue,
38
- context: {
39
- lt: messages.getDescriptionFor(options.lt),
40
- },
41
- })
42
- : true;
43
- }
15
+ return parsed;
16
+ }, {});
44
17
 
45
- return true;
18
+ return validateNumber(parsedOptions)(
19
+ key,
20
+ newValue,
21
+ oldValue,
22
+ changes,
23
+ content
24
+ );
46
25
  };
47
26
  }
@@ -4,12 +4,5 @@ module.exports = function (environment) {
4
4
  return {
5
5
  modulePrefix: require("../package.json").name,
6
6
  environment,
7
-
8
- "ember-validated-form": {
9
- theme: "uikit",
10
- defaults: {
11
- label: "cfb-label",
12
- },
13
- },
14
7
  };
15
8
  };
package/index.js CHANGED
@@ -9,4 +9,12 @@ module.exports = buildEngine({
9
9
  lazyLoading: {
10
10
  enabled: false,
11
11
  },
12
+
13
+ included(...args) {
14
+ const app = this._findHost(this);
15
+
16
+ app.options["ember-validated-form"] = { theme: "uikit" };
17
+
18
+ this._super.included.apply(this, args);
19
+ },
12
20
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcaluma/ember-form-builder",
3
- "version": "11.0.0-beta.27",
3
+ "version": "11.0.0-beta.29",
4
4
  "description": "Ember engine for building Caluma forms.",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -18,32 +18,33 @@
18
18
  "ember-engines": ">= 0.8"
19
19
  },
20
20
  "dependencies": {
21
+ "@ember/legacy-built-in-components": "^0.4.1",
21
22
  "@ember/render-modifiers": "^2.0.4",
22
23
  "@ember/string": "^3.0.0",
23
24
  "@embroider/macros": "^1.8.3",
24
25
  "@glimmer/component": "^1.1.2",
25
26
  "@glimmer/tracking": "^1.1.2",
26
- "@projectcaluma/ember-core": "^11.0.0-beta.27",
27
- "@projectcaluma/ember-form": "^11.0.0-beta.27",
27
+ "@projectcaluma/ember-core": "^11.0.0-beta.29",
28
+ "@projectcaluma/ember-form": "^11.0.0-beta.29",
28
29
  "codejar": "^3.6.0",
29
30
  "ember-apollo-client": "~4.0.2",
30
31
  "ember-auto-import": "^2.4.2",
31
- "ember-changeset": "^4.1.0",
32
+ "ember-changeset": "^4.1.1",
32
33
  "ember-changeset-validations": "^4.1.0",
33
34
  "ember-cli-babel": "^7.26.11",
34
- "ember-cli-htmlbars": "^6.1.0",
35
+ "ember-cli-htmlbars": "^6.1.1",
35
36
  "ember-composable-helpers": "^5.0.0",
36
- "ember-concurrency": "^2.3.2",
37
+ "ember-concurrency": "^2.3.7",
37
38
  "ember-engines-router-service": "^0.3.0",
38
39
  "ember-fetch": "^8.1.2",
39
40
  "ember-intl": "^5.7.2",
40
41
  "ember-math-helpers": "^2.18.2",
41
42
  "ember-pikaday": "^4.0.0",
42
43
  "ember-power-select": "^6.0.1",
43
- "ember-resources": "^5.3.0",
44
+ "ember-resources": "^5.4.0",
44
45
  "ember-test-selectors": "^6.0.0",
45
- "ember-uikit": "^6.0.0",
46
- "ember-validated-form": "^5.3.0",
46
+ "ember-uikit": "^6.1.0",
47
+ "ember-validated-form": "^6.1.2",
47
48
  "graphql": "^15.8.0",
48
49
  "graphql-tag": "^2.12.6",
49
50
  "highlight.js": "^11.6.0",
@@ -58,28 +59,26 @@
58
59
  ],
59
60
  "devDependencies": {
60
61
  "@ember/optional-features": "2.0.0",
61
- "@ember/test-helpers": "2.8.1",
62
+ "@ember/test-helpers": "2.7.0",
62
63
  "@embroider/test-setup": "1.8.3",
63
64
  "@faker-js/faker": "7.5.0",
64
- "@projectcaluma/ember-testing": "11.0.0-beta.27",
65
+ "@projectcaluma/ember-testing": "11.0.0-beta.29",
65
66
  "broccoli-asset-rev": "3.0.0",
66
67
  "ember-autoresize-modifier": "^0.5.0",
67
- "ember-cli": "3.28.5",
68
+ "ember-cli": "4.7.0",
68
69
  "ember-cli-code-coverage": "1.0.3",
69
70
  "ember-cli-dependency-checker": "3.3.1",
70
71
  "ember-cli-inject-live-reload": "2.1.0",
71
72
  "ember-cli-mirage": "3.0.0-alpha.3",
72
73
  "ember-cli-sri": "2.1.1",
73
74
  "ember-cli-terser": "4.0.2",
74
- "ember-data": "3.28.10",
75
+ "ember-data": "4.7.1",
75
76
  "ember-disable-prototype-extensions": "1.1.3",
76
77
  "ember-engines": "0.8.23",
77
- "ember-export-application-global": "2.0.1",
78
78
  "ember-load-initializers": "2.1.2",
79
- "ember-maybe-import-regenerator": "1.0.0",
80
79
  "ember-qunit": "5.1.5",
81
80
  "ember-resolver": "8.0.3",
82
- "ember-source": "3.28.9",
81
+ "ember-source": "4.7.0",
83
82
  "ember-source-channel-url": "3.0.0",
84
83
  "ember-try": "2.0.0",
85
84
  "loader.js": "4.7.0",
@@ -90,12 +89,15 @@
90
89
  "webpack": "5.74.0"
91
90
  },
92
91
  "engines": {
93
- "node": "12.* || 14.* || >= 16"
92
+ "node": "14.* || >= 16"
94
93
  },
95
94
  "ember": {
96
95
  "edition": "octane"
97
96
  },
98
97
  "ember-addon": {
99
- "configPath": "tests/dummy/config"
98
+ "configPath": "tests/dummy/config",
99
+ "before": [
100
+ "ember-validated-form"
101
+ ]
100
102
  }
101
103
  }
@@ -1,14 +0,0 @@
1
- {{component @labelComponent}}
2
-
3
- <input
4
- class="uk-input"
5
- name={{@name}}
6
- ...attributes
7
- step="any"
8
- type="number"
9
- value={{@value}}
10
- {{on "change" this.onUpdate}}
11
- />
12
-
13
- {{component @hintComponent}}
14
- {{component @errorComponent}}
@@ -1,12 +0,0 @@
1
- <label
2
- class="uk-form-label uk-flex uk-flex-between"
3
- for={{@inputId}}
4
- ...attributes
5
- >
6
- {{yield}}{{@label}}
7
- {{#unless @required}}
8
- <span class="uk-text-muted uk-text-lowercase">
9
- ({{t "caluma.form-builder.global.optional"}})
10
- </span>
11
- {{/unless}}
12
- </label>
@@ -1 +0,0 @@
1
- export { default } from "@projectcaluma/ember-form-builder/components/cfb-float-input";
@@ -1 +0,0 @@
1
- export { default } from "@projectcaluma/ember-form-builder/components/cfb-label";