{"version":3,"file":"ClassicDatePicker-DWVn4oHu.mjs","names":[],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n  <div ref=\"divContainer\" tabindex=\"0\">\n    <label\n      v-if=\"label && !range\"\n      class=\"form-label\"\n      :for=\"'dp-input-'+id\"\n      :class=\"displayLabel ? '' : 'd-none'\">{{ label }}</label>\n    <VueDatePicker\n      :uid=\"id\"\n      :model-value=\"modelVal\"\n      :time-picker=\"isTimePicker\"\n      :time-picker-inline=\"isTimePicker && timePickerInline\"\n      :input-class-name=\"templateClass\"\n      :clearable=\"false\"\n      :text-input=\"true\"\n      :readonly=\"readonly\"\n      :teleport=\"useTeleport\"\n      :locale=\"locale\"\n      :format=\"format\"\n      :auto-apply=\"true\"\n      :enable-seconds=\"displaySeconds\"\n      :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n      :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n      :range=\"undefined !== range\"\n      :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n      :inline=\"isInline\"\n      :enable-time-picker=\"!isTimePicker ? displayTimePicker : undefined\"\n      :aria-labels=\"ariaLabels\"\n      :max-time=\"maxTime\"\n      :month-picker=\"monthPicker\"\n      :alt-position=\"customPosition\"\n      @update:model-value=\"updateValue($event)\"\n    >\n      <template v-if=\"isTimePicker\" #input-icon>\n        <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n      </template>\n    </VueDatePicker>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport VueDatePicker from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  id:{ default: undefined, type: String },\n  time: {\n    default: undefined,\n    type: Object as () => { hours: number; minutes: number; seconds: number },\n  },\n  date: { default: undefined, type: Date },\n  range: { default: undefined, type: Array as () => Array<Date> },\n  /** Enable maximum date limit.\n   * If `dateLimit` is not set, use current datetime. */\n  isMaxDate: { default: false, type: Boolean },\n  /** Date limit when `isMaxDate` or `isMinDate` are set */\n  dateLimit: { default: undefined, type: Date },\n  /** Enable minimum date limit.\n   * If `dateLimit` is not set, use current datetime. */\n  isMinDate: { default: false, type: Boolean },\n  columnNumber: { default: 1, type: Number },\n  displaySeconds: { default: false, type: Boolean },\n  displayTimePicker: { default: true, type: Boolean },\n  isTimePicker: { default: false, type: Boolean },\n  useTeleport: { default: false, type: Boolean },\n  templateClass: { default: undefined, type: String },\n  readonly: { default: false, type: Boolean },\n  maxTime: {\n    default: null,\n    type: Object as () => {\n      hours?: number | string;\n      minutes?: number | string;\n      seconds?: number | string;\n    },\n  },\n  forceFormat: { default: undefined, type: String },\n  monthPicker: { default: false, type: Boolean },\n  customPosition: { default: null, type: Function },\n  isInline: { default: false, type: Boolean },\n  timePickerInline: { default: false, type: Boolean },\n  label: { default: undefined, type: String },\n  displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n  /**\n   * Update the date\n   * @param value The new date\n   * @deprecated\n   */\n  (e: \"updateDate\", value: Date): void;\n  /**\n   * Update the date\n   * @param value The new date\n   */\n  (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst {locale} = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n  return {\n    input: props.date ? formatDate(props.date) : undefined,\n    day: (value: { value: Date }) => {\n      return formatDate(value.value);\n    },\n  };\n});\nconst modelVal = computed(() => {\n  if (props.time) {\n    return props.time;\n  }\n  if (props.range) {\n    return props.range;\n  }\n  if (props.date && props.monthPicker) {\n    return {\n      month: props.date.getMonth(),\n      year: props.date.getFullYear(),\n    };\n  }\n  return props.date;\n});\nconst format = computed(() => {\n  if (props.forceFormat) {\n    return props.forceFormat;\n  }\n  if (props.monthPicker) {\n    return \"MM/yyyy\";\n  }\n  let timeString = \"\";\n  if (props.displayTimePicker || props.isTimePicker) {\n    timeString = \"HH:mm\";\n    if (props.displaySeconds) {\n      timeString = \"HH:mm:ss\";\n    }\n  }\n  const dayString = props.isTimePicker\n    ? timeString\n    : \"dd/MM/yyyy \" + timeString;\n  return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst limit = computed(() => {\n  if (props.dateLimit) {\n    return props.dateLimit;\n  }\n  return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n  if (!props.isInline) {\n    (divContainerRef?.value as HTMLElement)?.focus();\n  }\n  emit(\"updateDate\", date);\n  emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n  const realMonth = value.getMonth() + 1;\n  return (\n    value.getDate() +\n    \"/\" +\n    (realMonth < 10 ? \"0\" : \"\") +\n    realMonth +\n    \"/\" +\n    value.getFullYear()\n  );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp__theme_light {\n  --dp-primary-color: var(--octopus-primary);\n  --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n  <div ref=\"divContainer\" tabindex=\"0\">\n    <label\n      v-if=\"label && !range\"\n      class=\"form-label\"\n      :for=\"'dp-input-'+id\"\n      :class=\"displayLabel ? '' : 'd-none'\">{{ label }}</label>\n    <VueDatePicker\n      :uid=\"id\"\n      :model-value=\"modelVal\"\n      :time-picker=\"isTimePicker\"\n      :time-picker-inline=\"isTimePicker && timePickerInline\"\n      :input-class-name=\"templateClass\"\n      :clearable=\"false\"\n      :text-input=\"true\"\n      :readonly=\"readonly\"\n      :teleport=\"useTeleport\"\n      :locale=\"locale\"\n      :format=\"format\"\n      :auto-apply=\"true\"\n      :enable-seconds=\"displaySeconds\"\n      :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n      :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n      :range=\"undefined !== range\"\n      :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n      :inline=\"isInline\"\n      :enable-time-picker=\"!isTimePicker ? displayTimePicker : undefined\"\n      :aria-labels=\"ariaLabels\"\n      :max-time=\"maxTime\"\n      :month-picker=\"monthPicker\"\n      :alt-position=\"customPosition\"\n      @update:model-value=\"updateValue($event)\"\n    >\n      <template v-if=\"isTimePicker\" #input-icon>\n        <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n      </template>\n    </VueDatePicker>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport VueDatePicker from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  id:{ default: undefined, type: String },\n  time: {\n    default: undefined,\n    type: Object as () => { hours: number; minutes: number; seconds: number },\n  },\n  date: { default: undefined, type: Date },\n  range: { default: undefined, type: Array as () => Array<Date> },\n  /** Enable maximum date limit.\n   * If `dateLimit` is not set, use current datetime. */\n  isMaxDate: { default: false, type: Boolean },\n  /** Date limit when `isMaxDate` or `isMinDate` are set */\n  dateLimit: { default: undefined, type: Date },\n  /** Enable minimum date limit.\n   * If `dateLimit` is not set, use current datetime. */\n  isMinDate: { default: false, type: Boolean },\n  columnNumber: { default: 1, type: Number },\n  displaySeconds: { default: false, type: Boolean },\n  displayTimePicker: { default: true, type: Boolean },\n  isTimePicker: { default: false, type: Boolean },\n  useTeleport: { default: false, type: Boolean },\n  templateClass: { default: undefined, type: String },\n  readonly: { default: false, type: Boolean },\n  maxTime: {\n    default: null,\n    type: Object as () => {\n      hours?: number | string;\n      minutes?: number | string;\n      seconds?: number | string;\n    },\n  },\n  forceFormat: { default: undefined, type: String },\n  monthPicker: { default: false, type: Boolean },\n  customPosition: { default: null, type: Function },\n  isInline: { default: false, type: Boolean },\n  timePickerInline: { default: false, type: Boolean },\n  label: { default: undefined, type: String },\n  displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n  /**\n   * Update the date\n   * @param value The new date\n   * @deprecated\n   */\n  (e: \"updateDate\", value: Date): void;\n  /**\n   * Update the date\n   * @param value The new date\n   */\n  (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst {locale} = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n  return {\n    input: props.date ? formatDate(props.date) : undefined,\n    day: (value: { value: Date }) => {\n      return formatDate(value.value);\n    },\n  };\n});\nconst modelVal = computed(() => {\n  if (props.time) {\n    return props.time;\n  }\n  if (props.range) {\n    return props.range;\n  }\n  if (props.date && props.monthPicker) {\n    return {\n      month: props.date.getMonth(),\n      year: props.date.getFullYear(),\n    };\n  }\n  return props.date;\n});\nconst format = computed(() => {\n  if (props.forceFormat) {\n    return props.forceFormat;\n  }\n  if (props.monthPicker) {\n    return \"MM/yyyy\";\n  }\n  let timeString = \"\";\n  if (props.displayTimePicker || props.isTimePicker) {\n    timeString = \"HH:mm\";\n    if (props.displaySeconds) {\n      timeString = \"HH:mm:ss\";\n    }\n  }\n  const dayString = props.isTimePicker\n    ? timeString\n    : \"dd/MM/yyyy \" + timeString;\n  return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst limit = computed(() => {\n  if (props.dateLimit) {\n    return props.dateLimit;\n  }\n  return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n  if (!props.isInline) {\n    (divContainerRef?.value as HTMLElement)?.focus();\n  }\n  emit(\"updateDate\", date);\n  emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n  const realMonth = value.getMonth() + 1;\n  return (\n    value.getDate() +\n    \"/\" +\n    (realMonth < 10 ? \"0\" : \"\") +\n    realMonth +\n    \"/\" +\n    value.getFullYear()\n  );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp__theme_light {\n  --dp-primary-color: var(--octopus-primary);\n  --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}