Skip to content
Snippets Groups Projects
ParameterNumberInput.vue 1 KiB
Newer Older
  • Learn to ignore specific revisions
  • <script setup lang="ts">
    import { ref } from "vue";
    const props = defineProps({
      parameter: {
        type: Object,
        required: true,
        validator(value: Record<string, never>) {
          return "number" === value["type"] || "integer" === value["type"];
        },
      },
      required: Boolean,
      parameterName: {
        type: String,
        required: true,
      },
      modelValue: {
        type: Number,
      },
      helpId: {
        type: String,
      },
    });
    
    const emit = defineEmits<{
      (e: "update:modelValue", value: number | undefined): void;
    }>();
    
    const numberInput = ref<HTMLInputElement | undefined>(undefined);
    
    function updateValue() {
      emit("update:modelValue", Number(numberInput.value?.value));
    }
    </script>
    
    <template>
      <input
        class="form-control"
        type="number"
        ref="numberInput"
        :max="props.parameter['maximum']"
        :min="props.parameter['minimum']"
    
        :value="props.modelValue"
        :required="props.required"
        :aria-describedby="props.helpId"
        @input="updateValue"
      />
    </template>
    
    <style scoped></style>