Skip to content
Snippets Groups Projects
DurationInput.vue 1.45 KiB
<template>
  <div class="form-group mt-3">
    <label class="form-check-label" :for="id">
      {{ label }}
    </label>
    <div class="row g-3 align-items-center">
      <div :id="id" class="col-6">
        <div class="input-group">
          <span class="input-group-text"> Von </span>
          <input
            type="date"
            required
            :disabled="readonly"
            class="form-control"
            :value="from"
            @input="$emit('update:from', $event.target.value)"
            :min="minDate"
            :max="maxDate"
          />
        </div>
      </div>
      <div class="col-6">
        <div class="input-group">
          <span class="input-group-text"> Bis </span>
          <input
            type="date"
            :disabled="readonly"
            required
            class="form-control"
            :value="to"
            @input="$emit('update:to', $event.target.value)"
            :min="from !== null ? from : minDate"
            :max="maxDate"
          />
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import "bootstrap";
import "bootstrap/dist/css/bootstrap.css";
/**
 * A bootstrap styled duration input component with a label.
 */
export default {
  name: "DurationInput",
  props: {
    id: String,
    from: String,
    to: String,
    label: String,
    required: Boolean,
    minDate: String,
    maxDate: String,
    readonly: { type: Boolean, default: false },
  },
  setup() {},
};
</script>