Skip to content

Commit 725eb11

Browse files
committed
feat(form-builder): add option to use number separator widget as default
1 parent 709a7a2 commit 725eb11

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

packages/core/addon/services/caluma-options.js

+10
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,18 @@ export default class CalumaOptionsService extends Service {
3131
: null;
3232
}
3333

34+
/**
35+
* Use number separator widget for all viable questions (integer, float and
36+
* calculated float) without exceptions.
37+
*/
3438
alwaysUseNumberSeparatorWidget = false;
3539

40+
/**
41+
* Pre-select number separator widget when creating a viable question in the
42+
* form builder.
43+
*/
44+
useNumberSeparatorWidgetAsDefault = false;
45+
3646
/**
3747
* Registers a new component override.
3848
*

packages/form-builder/addon/components/cfb-form-editor/question.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
@name="__typename"
3636
@required={{true}}
3737
@disabled={{not (is-empty @slug)}}
38-
@on-update={{changeset-set f.model "__typename"}}
38+
@on-update={{this.updateType}}
3939
/>
4040

4141
<f.input

packages/form-builder/addon/components/cfb-form-editor/question.js

+24
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,30 @@ export default class CfbFormEditorQuestion extends Component {
501501
}
502502
}
503503

504+
@action
505+
updateType(value, changeset) {
506+
changeset.set("__typename", value);
507+
508+
const defaultWidget = "cf-field/input/number-separator";
509+
const currentWidget = changeset.get("meta.widgetOverride");
510+
const isViableType = [
511+
"IntegerQuestion",
512+
"FloatQuestion",
513+
"CalculatedFloatQuestion",
514+
].includes(value);
515+
516+
if (this.calumaOptions.useNumberSeparatorWidgetAsDefault) {
517+
if (isViableType && !currentWidget) {
518+
// Set the default widget as override if the question type is viable for
519+
// it and there is no widget selected yet
520+
changeset.set("meta.widgetOverride", defaultWidget);
521+
} else if (!isViableType && currentWidget === defaultWidget) {
522+
// Remove default widget for non viable question types
523+
changeset.set("meta.widgetOverride", undefined);
524+
}
525+
}
526+
}
527+
504528
@action
505529
updateSubForm(value, changeset) {
506530
changeset.set("subForm.slug", value.slug);

0 commit comments

Comments
 (0)