{"version":3,"file":"date-trigger.vue2.mjs","sources":["../../../../../packages/components/common/date-trigger.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { computed, defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\n  import { getNamespace } from '../../utils/global-config'\n  import { Input } from '../input'\n  import type { InputInstance } from '../input'\n  import { BnIconCalendar } from '../icon'\n  import { isElement } from '../../utils/is'\n  import { definePropType } from '../../utils/vue-utils'\n\n  export default defineComponent({\n    name: 'DateTrigger',\n    components: {\n      Input,\n      BnIconCalendar\n    },\n    props: {\n      inputValue: {\n        type: definePropType<string[]>(Array),\n        default: () => []\n      },\n      clearable: {\n        type: Boolean,\n        default: false\n      },\n      disabled: {\n        type: Boolean,\n        default: false\n      },\n      rangeSeparator: {\n        type: String,\n        default: '~'\n      },\n      placeholder: {\n        type: String,\n        required: true\n      },\n      size: {\n        type: definePropType<'small' | 'default' | 'large'>(String),\n        required: true\n      },\n      popupRef: {\n        type: Object,\n        default: undefined\n      },\n      rangePattern: {\n        type: Boolean,\n        default: false\n      },\n      card: {\n        type: Boolean,\n        default: false\n      }\n    },\n    emits: ['clear'],\n    setup(props, { emit }) {\n      const ns = getNamespace('date-trigger')\n      const inputComponentRef = ref<InputInstance>()\n      const selectTriggerDomRef = ref()\n      const computedInputValue = computed(() => {\n        if (props.rangePattern) {\n          if (props.inputValue.length) {\n            return ' '\n          }\n          return ''\n        }\n        return props.inputValue[0]\n      })\n\n      const isFocus = ref(false)\n\n      const computedPlaceholder = computed(() => {\n        if (props.rangePattern) {\n          return ''\n        }\n        return props.placeholder\n      })\n\n      const computedReadonly = computed(() => true)\n\n      const inputRange = ref<{ l: string; r: string }>({ l: '', r: '' })\n\n      watch(\n        () => props.inputValue,\n        (values) => {\n          if (props.rangePattern) {\n            inputRange.value.l = values[0]\n            inputRange.value.r = values[1]\n          }\n        },\n        {\n          immediate: true\n        }\n      )\n\n      const handleClear = () => {\n        emit('clear')\n      }\n\n      const clickOutside = (e: MouseEvent) => {\n        const el = e.target as HTMLElement\n        const deps: HTMLElement[] = [popupTargetElement.value, selectTriggerDomRef.value]\n        const inner = deps.some((container) => container.contains(el))\n        requestAnimationFrame(() => {\n          inputComponentRef.value?.setFocus(inner)\n          isFocus.value = inner\n        })\n      }\n\n      const popupTargetElement = computed(() => {\n        if (isElement(props.popupRef)) return props.popupRef\n        if (isElement(props.popupRef?.$el)) return props.popupRef?.$el\n        return null\n      })\n\n      onMounted(() => {\n        document.documentElement.addEventListener('mousedown', clickOutside, true)\n      })\n\n      onUnmounted(() => {\n        document.documentElement.removeEventListener('mousedown', clickOutside, true)\n      })\n\n      return {\n        ns,\n        isFocus,\n        inputComponentRef,\n        selectTriggerDomRef,\n        computedInputValue,\n        computedPlaceholder,\n        computedReadonly,\n        inputRange,\n        handleClear\n      }\n    }\n  })\n</script>\n\n<template>\n  <div ref=\"selectTriggerDomRef\" :class=\"[ns]\">\n    <Input\n      ref=\"inputComponentRef\"\n      :model-value=\"computedInputValue\"\n      :validate-event=\"false\"\n      :readonly=\"computedReadonly\"\n      :placeholder=\"computedPlaceholder\"\n      :clearable=\"clearable\"\n      :size=\"size\"\n      :disabled=\"disabled\"\n      :card=\"card\"\n      @clear=\"handleClear\"\n    >\n      <template #suffix-icon>\n        <BnIconCalendar />\n      </template>\n    </Input>\n\n    <div\n      v-if=\"rangePattern\"\n      :class=\"[`${ns}__range`, disabled && 'is-disabled', isFocus && 'is-focus']\"\n    >\n      <input\n        v-model=\"inputRange.l\"\n        :class=\"[`${ns}__range-input`]\"\n        type=\"text\"\n        :disabled=\"disabled\"\n        placeholder=\"开始时间\"\n      />\n      <span :class=\"[`${ns}__range-separator`]\">{{ rangeSeparator }}</span>\n      <input\n        v-model=\"inputRange.r\"\n        :class=\"[`${ns}__range-input`]\"\n        type=\"text\"\n        :disabled=\"disabled\"\n        placeholder=\"结束时间\"\n      />\n    </div>\n  </div>\n</template>\n"],"names":[],"mappings":"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"}