diff --git a/src/fieldArguments/inputFieldArguments/InputFieldArgumentFactory.ts b/src/fieldArguments/inputFieldArguments/InputFieldArgumentFactory.ts
index 55679735..75bb8e83 100644
--- a/src/fieldArguments/inputFieldArguments/InputFieldArgumentFactory.ts
+++ b/src/fieldArguments/inputFieldArguments/InputFieldArgumentFactory.ts
@@ -13,12 +13,14 @@ import { DefaultValueInputFieldArgument } from './arguments/DefaultValueInputFie
import { PlaceholderInputFieldArgument } from './arguments/PlaceholderInputFieldArgument';
import { InputFieldArgumentType } from '../../parsers/inputFieldParser/InputFieldConfigs';
import { UseLinksInputFieldArgument } from './arguments/UseLinksInputFieldArgument';
+import { StepSizeValueInputFieldArgument } from './arguments/StepSizeValueInputFieldArgument';
export const INPUT_FIELD_ARGUMENT_MAP = {
[InputFieldArgumentType.CLASS]: ClassInputFieldArgument,
[InputFieldArgumentType.ADD_LABELS]: AddLabelsInputFieldArgument,
[InputFieldArgumentType.MIN_VALUE]: MinValueInputFieldArgument,
[InputFieldArgumentType.MAX_VALUE]: MaxValueInputFieldArgument,
+ [InputFieldArgumentType.STEP_SIZE]: StepSizeValueInputFieldArgument,
[InputFieldArgumentType.OPTION]: OptionInputFieldArgument,
[InputFieldArgumentType.TITLE]: TitleInputFieldArgument,
[InputFieldArgumentType.OPTION_QUERY]: OptionQueryInputFieldArgument,
diff --git a/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts
index 8f913477..ce81f515 100644
--- a/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts
+++ b/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts
@@ -7,7 +7,7 @@ export class MaxValueInputFieldArgument extends AbstractInputFieldArgument {
value: number = 100;
_parseValue(value: ParsingResultNode[]): void {
- this.value = Number.parseInt(value[0].value);
+ this.value = Number.parseFloat(value[0].value);
if (Number.isNaN(this.value)) {
throw new MetaBindParsingError(
ErrorLevel.ERROR,
diff --git a/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts
index a0a25587..f0072556 100644
--- a/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts
+++ b/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts
@@ -7,7 +7,7 @@ export class MinValueInputFieldArgument extends AbstractInputFieldArgument {
value: number = 0;
_parseValue(value: ParsingResultNode[]): void {
- this.value = Number.parseInt(value[0].value);
+ this.value = Number.parseFloat(value[0].value);
if (Number.isNaN(this.value)) {
throw new MetaBindParsingError(
ErrorLevel.ERROR,
diff --git a/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts
new file mode 100644
index 00000000..4105f923
--- /dev/null
+++ b/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts
@@ -0,0 +1,31 @@
+import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument';
+import { ErrorLevel, MetaBindParsingError } from '../../../utils/errors/MetaBindErrors';
+import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/inputFieldParser/InputFieldConfigs';
+import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers';
+
+export class StepSizeValueInputFieldArgument extends AbstractInputFieldArgument {
+ value: number = 0;
+
+ _parseValue(value: ParsingResultNode[]): void {
+ this.value = Number.parseFloat(value[0].value);
+ if (Number.isNaN(this.value)) {
+ throw new MetaBindParsingError(
+ ErrorLevel.WARNING,
+ 'failed to set value for input field argument',
+ "value of argument 'stepSize' must be of type number",
+ );
+ }
+ if (this.value <= 0) {
+ throw new MetaBindParsingError(
+ ErrorLevel.WARNING,
+ 'failed to set value for input field argument',
+ "value of argument 'stepSize' must be a positive number",
+ );
+
+ }
+ }
+
+ public getConfig(): InputFieldArgumentConfig {
+ return InputFieldArgumentConfigs.stepSize;
+ }
+}
diff --git a/src/inputFields/_new/fields/Slider/SliderComponent.svelte b/src/inputFields/_new/fields/Slider/SliderComponent.svelte
index 2a0fc579..39011c28 100644
--- a/src/inputFields/_new/fields/Slider/SliderComponent.svelte
+++ b/src/inputFields/_new/fields/Slider/SliderComponent.svelte
@@ -2,6 +2,7 @@
export let value: number;
export let minValue: number;
export let maxValue: number;
+ export let stepSize: number;
export let addLabels: boolean;
export let onValueChange: (value: number) => void;
@@ -12,11 +13,11 @@
{#if addLabels}
{minValue}
- onValueChange(value)}>
{maxValue}
{:else}
- onValueChange(value)}>
{/if}
diff --git a/src/inputFields/_new/fields/Slider/SliderIPF.ts b/src/inputFields/_new/fields/Slider/SliderIPF.ts
index ec572a76..b517c5a3 100644
--- a/src/inputFields/_new/fields/Slider/SliderIPF.ts
+++ b/src/inputFields/_new/fields/Slider/SliderIPF.ts
@@ -8,12 +8,15 @@ import { InputFieldArgumentType } from '../../../../parsers/inputFieldParser/Inp
export class SliderIPF extends NewAbstractInputField {
minValue: number;
maxValue: number;
+ stepSize: number;
constructor(renderChild: InputFieldMDRC) {
super(renderChild);
+ // FIXME: Check that minvalue < maxvalue.
this.minValue = this.renderChild.getArgument(InputFieldArgumentType.MIN_VALUE)?.value ?? 0;
this.maxValue = this.renderChild.getArgument(InputFieldArgumentType.MAX_VALUE)?.value ?? 100;
+ this.stepSize = this.renderChild.getArgument(InputFieldArgumentType.STEP_SIZE)?.value ?? 1;
}
protected filterValue(value: any): number | undefined {
@@ -51,6 +54,7 @@ export class SliderIPF extends NewAbstractInputField {
return {
minValue: this.minValue,
maxValue: this.maxValue,
+ stepSize: this.stepSize,
addLabels: this.renderChild.getArgument(InputFieldArgumentType.ADD_LABELS)?.value === true,
};
}
diff --git a/src/parsers/inputFieldParser/InputFieldConfigs.ts b/src/parsers/inputFieldParser/InputFieldConfigs.ts
index 67bb5b86..907ff855 100644
--- a/src/parsers/inputFieldParser/InputFieldConfigs.ts
+++ b/src/parsers/inputFieldParser/InputFieldConfigs.ts
@@ -30,6 +30,7 @@ export enum InputFieldArgumentType {
ADD_LABELS = 'addLabels',
MIN_VALUE = 'minValue',
MAX_VALUE = 'maxValue',
+ STEP_SIZE = 'stepSize',
OPTION = 'option',
TITLE = 'title',
OPTION_QUERY = 'optionQuery',
@@ -231,6 +232,20 @@ export const InputFieldArgumentConfigs: Record