{"version":3,"file":"Datepicker-lcuTwSIm.js","sources":["../../../style_guide/templates/patterns/atoms/forms/input/Datepicker.vue"],"sourcesContent":["<template>\n  <div ref=\"container\" class=\"h-9\" ipso-datepicker>\n    <input\n      :id=\"id\"\n      ref=\"elem\"\n      type=\"text\"\n      class=\"peer\"\n      :class=\"dynamicInputClass\"\n      :placeholder=\"placeholder\"\n      :name=\"name\"\n      :value=\"displayDate\"\n      :disabled=\"disabled\"\n      v-bind=\"{ ...$attrs }\"\n      :readonly=\"readonly || isMobile\"\n      @focus=\"openAndEmit('focus')\"\n      @click=\"openAndEmit('click')\"\n      @keyup=\"onKeyup\"\n    />\n  </div>\n</template>\n\n<script>\nimport $ from 'jquery';\nimport dayjs from '@util/dayjs';\nimport { initDatepicker } from '@util/datepicker';\n\nexport default {\n  props: {\n    id: {\n      type: String,\n    },\n\n    disabled: {\n      default: false,\n      type: Boolean,\n    },\n\n    disabledDays: {\n      type: Array,\n      default: () => [],\n    },\n\n    displayFormat: {\n      type: String,\n      default: 'DD/MM/YYYY',\n    },\n\n    name: {\n      type: String,\n    },\n\n    modelValue: {\n      type: String,\n    },\n\n    parseFormat: {\n      type: String,\n      default: 'YYYY-MM-DD',\n    },\n\n    placeholder: {\n      type: String,\n    },\n\n    min: {\n      type: String,\n    },\n\n    max: {\n      type: String,\n    },\n\n    inputClass: {\n      type: String,\n      default: '',\n    },\n\n    readonly: {\n      type: Boolean,\n      default: false,\n    },\n  },\n\n  emits: ['update:modelValue', 'focus', 'click'],\n\n  data() {\n    const isMobile = window.IPSO_GLOBALS?.DEVICE_INFO?.is_mobile;\n\n    return {\n      isMobile,\n      airDatepickerInstance: null,\n    };\n  },\n\n  computed: {\n    dynamicInputClass() {\n      let dynamicInputClass = this.inputClass;\n\n      if (this.readonly) {\n        dynamicInputClass += ' caret-transparent select-none';\n      } else {\n        dynamicInputClass += 'focus:border-orange focus:ring-orange';\n      }\n\n      return dynamicInputClass;\n    },\n\n    displayDate() {\n      if (this.modelValue) {\n        const date = dayjs(this.modelValue, this.parseFormat);\n\n        return date.format(this.displayFormat);\n      }\n\n      return null;\n    },\n\n    initialDate() {\n      if (this.modelValue) {\n        return dayjs(this.modelValue, this.parseFormat);\n      }\n\n      return dayjs();\n    },\n  },\n\n  beforeUnmount() {\n    if (this.airDatepickerInstance) {\n      this.airDatepickerInstance.destroy();\n    }\n  },\n\n  methods: {\n    initAndOpen() {\n      if (this.airDatepickerInstance || this.disabled || this.readonly) {\n        return false;\n      }\n\n      const { min, max } = this;\n      const { elem, container } = this.$refs;\n\n      const initialDate = this.initialDate;\n      const bodyHasModal = $(document.documentElement).hasClass(\n        'has-open-modal',\n      );\n\n      const extraOptions = {};\n\n      if (this.disabledDays.length) {\n        extraOptions.onRenderCell = ({ date, cellType }) => {\n          if (cellType === 'day') {\n            for (const disabledDay of this.disabledDays) {\n              if (date.getDay() === disabledDay) {\n                return {\n                  disabled: true,\n                };\n              }\n            }\n          }\n        };\n      }\n\n      this.airDatepickerInstance = initDatepicker({\n        container: bodyHasModal ? container : undefined,\n        elem,\n        initialDateString: initialDate.format('YYYY-MM-DD'),\n        min,\n        max,\n        isMobile: this.isMobile,\n        onSelect: (date) => {\n          this.$emit('update:modelValue', dayjs(date).format(this.parseFormat));\n        },\n        onShow(isFinished) {\n          if (!isFinished && bodyHasModal) {\n            $('.air-datepicker-overlay').appendTo(container);\n          }\n        },\n        onHide(isFinished) {\n          if (!isFinished && bodyHasModal) {\n            $('.air-datepicker-overlay').appendTo(\n              '.air-datepicker-global-container',\n            );\n          }\n        },\n        ...extraOptions,\n      });\n\n      this.airDatepickerInstance.show();\n    },\n\n    openAndEmit(event) {\n      this.initAndOpen();\n\n      if (!this.isMobile) {\n        this.$emit(event);\n      }\n    },\n\n    onKeyup() {\n      const elemValue = this.$refs?.elem?.value;\n\n      if (elemValue && elemValue.length > 1) {\n        const parsedDate = dayjs(elemValue, 'DD/MM/YYYY');\n\n        if (parsedDate.isValid()) {\n          this.airDatepickerInstance.selectDate(parsedDate.toDate());\n        }\n      }\n    },\n  },\n};\n</script>\n"],"names":["_sfc_main","dynamicInputClass","dayjs","min","max","elem","container","initialDate","bodyHasModal","$","extraOptions","date","cellType","disabledDay","initDatepicker","isFinished","event","elemValue","parsedDate","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_mergeProps","$props","$options","_ctx","$data","args"],"mappings":"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"}