tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 5.92 kB
Source Map (JSON)
{"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 props from './props';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport TCalendarTemplate from './template';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-calendar`,\n props,\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\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');\n return (\n <div>\n {!props.usePopup ? (\n <TCalendarTemplate ref={calendarTemplateRef} title={title} confirmBtn={confirmBtn}></TCalendarTemplate>\n ) : (\n <TPopup visible={props.visible} placement=\"bottom\" onVisibleChange={onPopupVisibleChange}>\n <TCalendarTemplate\n ref={calendarTemplateRef}\n title={title}\n confirmBtn={confirmBtn}\n onVisibleChange={onVisibleChange}\n ></TCalendarTemplate>\n </TPopup>\n )}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","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","_props2$onClose","onClose","nextTick","onMounted","usePopup","watch","val","valueRef","title","confirmBtn","_createVNode","TCalendarTemplate","TPopup","visible","default","_default"],"mappings":"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"}