UNPKG

tdesign-mobile-vue

Version:
1 lines 6.24 kB
{"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAQA,SAAWC,MAAA,CAAXD;AAER,gBAAeE,eAAgB,CAAA;AAC7BC,EAAAA,gBAASH,MAAA,EAAA,WAAA,CAAA;AACTI,EAAAA,UAAY,EAAA;AACVC,IAAAA,MAAA,EAAAA,KAAA;AACAC,IAAAA,gBAAA,EAAAA,gBAAAA;GACF;AACAC,EAAAA,KAAO,EAAAC,aAAA;EACPC,KAAA,EAAO,CAAC,gBAAgB,CAAA;AACxBC,EAAAA,KAAA,WAAAA,KAAAA,CAAMH,OAAOI,OAAS,EAAA;AACd,IAAA,IAAAC,aAAA,GAAgBC,eAAe,UAAU,CAAA,CAAA;AAE/C,IAAA,IAAMC,sBAAsBC,GAAI,EAAA,CAAA;AAChC,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AAE3BC,IAAAA,OAAA,CAAA,eAAA,EAAiBC,QAAS,CAAAZ,KAAK,CAAC,CAAA,CAAA;AACxC,IAAA,IAAMa,wBAAwB,SAAxBA,wBAA8B;AAAA,MAAA,IAAAC,qBAAA,CAAA;MAClC,IAAMC,IAAO,GAAAf,KAAA,CAAMe,IAAS,KAAA,OAAA,GAAU,OAAU,GAAA,UAAA,CAAA;AAC1C,MAAA,IAAEC,WAAY,GAAIT,mBAAoB,CAAAU,KAAA,CAApCD,WAAY,CAAA;AACpB,MAAA,IAAME,eAAkB,GAAAF,WAAA,CAAYG,aAAc,CAAA,GAAA,CAAAC,MAAA,CAAIf,cAAcY,KAAe,EAAA,UAAA,CAAA,CAAA,CAAA;AAC7E,MAAA,IAAAI,YAAA,GAAA,CAAAP,qBAAA,GAAeE,YAAYG,aAAc,CAAAC,GAAAA,CAAAA,MAAA,CAAIf,cAAcY,KAAsB,oBAAAG,MAAA,CAAAL,IAAA,CAAM,4EAAxED,qBAAA,CAA2EQ,UAC5F,MAAAR,IAAAA,IAAAA,qBAAA,KADiBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CACjBS,sBAAA,CAAA;AACJ,MAAA,IAAIF,YAAc,EAAA;QACAH,eAAA,CAAAM,SAAA,GAAYH,YAAa,CAAAI,SAAA,GAAYP,eAAgB,CAAAO,SAAA,CAAA;AACvE,OAAA;KACF,CAAA;AAEM,IAAA,IAAAC,eAAA,GAAkB,SAAlBA,eAAAA,CAAmBC,CAAe,EAAA;AAC9BvB,MAAAA,OAAA,CAAAwB,IAAA,CAAK,kBAAkBD,CAAC,CAAA,CAAA;KAClC,CAAA;AACM,IAAA,IAAAE,oBAAA,GAAuB,SAAvBA,oBAAAA,CAAwBF,CAAe,EAAA;MAC3C,IAAI,CAACA,CAAG,EAAA;AAAA,QAAA,IAAAG,cAAA,CAAA;AACN,QAAA,CAAAA,cAAA,GAAA9B,KAAA,CAAM+B,wCAAND,KAAAA,CAAAA,IAAAA,cAAA,CAAAE,IAAA,CAAAhC,KAAA,EAAgB,SAAS,CAAA,CAAA;AAC3B,OAAO,MAAA;AACLiC,QAAAA,QAAA,CAAS,YAAM;AACSpB,UAAAA,qBAAA,EAAA,CAAA;AACxB,SAAC,CAAA,CAAA;AACH,OAAA;AACQT,MAAAA,OAAA,CAAAwB,IAAA,CAAK,kBAAkBD,CAAC,CAAA,CAAA;KAClC,CAAA;AAEAO,IAAAA,SAAA,CAAU,YAAM;AACd,MAAA,IAAI,CAAClC,KAAM,CAAAmC,QAAA,EAAgCtB,qBAAA,EAAA,CAAA;AAC7C,KAAC,CAAA,CAAA;AAEDuB,IAAAA,KAAA,CACE,YAAA;MAAA,OAAMpC,KAAM,CAAAiB,KAAA,CAAA;KACZ,EAAA,UAACoB,GAAQ,EAAA;AACP9B,MAAAA,mBAAA,CAAoBU,MAAMqB,QAAW,GAAAD,GAAA,CAAA;AACvC,KACF,CAAA,CAAA;AAEA,IAAA,OAAO,YAAM;AACL,MAAA,IAAAE,KAAA,GAAQ9B,eAAe,OAAO,CAAA,CAAA;AACpC,MAAA,IAAM+B,aAAa/B,cAAe,CAAA,YAAY,MAAM,KAAY,CAAA,GAAA,IAAA,GAAOA,eAAe,YAAY,CAAA,CAAA;MAClG,OAAAgC,WAAA,eAEK,CAACzC,KAAM,CAAAmC,QAAA,GAAAM,WAAA,CAAA1C,gBAAA,EAAA;AAAA,QAAA,KAAA,EACiBQ,mBAAqB;AAAA,QAAA,OAAA,EAAOgC;oBAAmBC,EAAAA,UAAAA;OAAAC,EAAAA,IAAAA,CAAAA,GAAAA,WAAA,CAAAC,gBAAA,CAAA,SAAA,CAAA,EAAA;QAAA,SAEpD1C,EAAAA,KAAA,CAAM2C,OAAS;AAAA,QAAA,WAAA,EAAU;yBAA0Bd,EAAAA,oBAAAA;AAAA,OAAA,EAAA;AAAAe,QAAAA,OAAA,WAAAC,QAAA,GAAA;UAAA,OAAAJ,CAAAA,WAAA,CAAA1C,gBAAA,EAAA;AAAA,YAAA,KAAA,EAE5DQ,mBACL;AAAA,YAAA,OAAA,EAAOgC,KACP;AAAA,YAAA,YAAA,EAAYC;6BACKd,EAAAA,eAAAA;AAAA,WAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,SAAA;;KAM7B,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}