{"version":3,"file":"calendar.mjs","sources":["../../src/calendar/calendar.tsx"],"sourcesContent":["import { provide, watch, ref, reactive, nextTick, onMounted, defineComponent, toRefs } from 'vue';\nimport TPopup from '../popup';\nimport config from '../config';\nimport calendarProps from './props';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport calendarTemplate from './template';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-calendar`,\n  components: {\n    TPopup,\n    calendarTemplate,\n  },\n  props: calendarProps,\n  emits: ['update:visible'],\n  setup(props, context) {\n    const calendarClass = usePrefixClass('calendar');\n\n    const calendarTemplateRef = ref();\n    const renderTNodeJSX = useTNodeJSX();\n\n    provide('templateProps', reactive(props));\n    const selectedValueIntoView = () => {\n      const type = props.type === 'range' ? 'start' : 'selected';\n      const { templateRef } = calendarTemplateRef.value;\n      const scrollContainer = templateRef.querySelector(`.${calendarClass.value}__months`);\n      const selectedDate = templateRef.querySelector(`.${calendarClass.value}__dates-item--${type}`)?.parentNode\n        ?.previousElementSibling;\n      if (selectedDate) {\n        scrollContainer.scrollTop = selectedDate.offsetTop - scrollContainer.offsetTop;\n      }\n    };\n\n    const onVisibleChange = (v: boolean) => {\n      context.emit('update:visible', v);\n    };\n    const onPopupVisibleChange = (v: boolean) => {\n      if (!v) {\n        props.onClose?.('overlay');\n      } else {\n        nextTick(() => {\n          selectedValueIntoView();\n        });\n      }\n      context.emit('update:visible', v);\n    };\n\n    onMounted(() => {\n      if (!props.usePopup) selectedValueIntoView();\n    });\n\n    watch(\n      () => props.value,\n      (val) => {\n        calendarTemplateRef.value.valueRef = val;\n      },\n    );\n\n    return () => {\n      const title = renderTNodeJSX('title');\n      const confirmBtn = renderTNodeJSX('confirmBtn') === undefined ? null : renderTNodeJSX('confirmBtn');\n      return (\n        <div>\n          {!props.usePopup ? (\n            <calendarTemplate ref={calendarTemplateRef} title={title} confirmBtn={confirmBtn}></calendarTemplate>\n          ) : (\n            <t-popup visible={props.visible} placement=\"bottom\" onVisibleChange={onPopupVisibleChange}>\n              <calendarTemplate\n                ref={calendarTemplateRef}\n                title={title}\n                confirmBtn={confirmBtn}\n                onVisibleChange={onVisibleChange}\n              ></calendarTemplate>\n            </t-popup>\n          )}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","components","TPopup","calendarTemplate","props","calendarProps","emits","setup","context","calendarClass","usePrefixClass","calendarTemplateRef","ref","renderTNodeJSX","useTNodeJSX","provide","reactive","selectedValueIntoView","_templateRef$querySel","type","templateRef","value","scrollContainer","querySelector","concat","selectedDate","parentNode","previousElementSibling","scrollTop","offsetTop","onVisibleChange","v","emit","onPopupVisibleChange","_props$onClose","onClose","call","nextTick","onMounted","usePopup","watch","val","valueRef","title","confirmBtn","_createVNode","_resolveComponent","visible","default","_default"],"mappings":"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"}