UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 6.14 kB
{"version":3,"file":"time-picker-panel.mjs","sources":["../../../src/time-picker/panel/time-picker-panel.tsx"],"sourcesContent":["import { defineComponent, toRefs, computed, ref, onMounted, nextTick, watch } from 'vue';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { DEFAULT_STEPS, DEFAULT_FORMAT } from '../../_common/js/time-picker/const';\nimport { panelProps } from './props';\nimport SinglePanel from './single-panel';\nimport TButton from '../../button/button';\nimport { useConfig, usePrefixClass } from '../../hooks/useConfig';\n\ndayjs.extend(customParseFormat);\n\nexport default defineComponent({\n name: 'XTimePickerPanel',\n\n props: {\n ...panelProps(),\n isFooterDisplay: Boolean,\n handleConfirmClick: Function,\n onChange: Function,\n },\n\n setup(props) {\n const panelClassName = usePrefixClass('time-picker__panel');\n const { steps, isFooterDisplay, isShowPanel } = toRefs(props);\n const triggerScroll = ref(false);\n const panelRef = ref();\n const { globalConfig } = useConfig('timePicker');\n const showNowTimeBtn = computed(() => !!steps.value.filter((v) => v > 1).length);\n\n const defaultValue = computed(() => {\n const isStepsSet = showNowTimeBtn.value;\n const formattedValue = dayjs(props.value, props.format);\n if (props.value && formattedValue.isValid()) {\n return formattedValue.format(props.format);\n }\n\n if (isStepsSet) {\n return dayjs().hour(0).minute(0).second(0).format(props.format);\n }\n return dayjs().hour(0).minute(0).second(0).format(props.format);\n });\n\n const panelColUpdate = () => {\n nextTick(() => {\n triggerScroll.value = true;\n });\n };\n\n const resetTriggerScroll = () => {\n triggerScroll.value = false;\n };\n\n // 渲染后执行update 使面板滚动至当前时间位置\n onMounted(() => {\n panelColUpdate();\n });\n\n watch(\n () => isShowPanel.value,\n () => {\n panelColUpdate();\n },\n );\n\n return () => (\n <div class={panelClassName.value}>\n <div class={`${panelClassName.value}-section-body`}>\n <SinglePanel\n {...props}\n ref={panelRef}\n format={props.format || DEFAULT_FORMAT}\n steps={props.steps || DEFAULT_STEPS}\n value={dayjs(props.value, props.format).isValid() ? props.value : defaultValue.value}\n triggerScroll={triggerScroll.value}\n onChange={props.onChange}\n resetTriggerScroll={resetTriggerScroll}\n isShowPanel={props.isShowPanel}\n />\n </div>\n {isFooterDisplay.value ? (\n <div class={`${panelClassName.value}-section-footer`}>\n <TButton\n theme=\"primary\"\n variant=\"base\"\n disabled={!props.value}\n onClick={() => props.handleConfirmClick(defaultValue.value)}\n size=\"small\"\n >\n {globalConfig.value.confirm}\n </TButton>\n {!showNowTimeBtn.value ? (\n <TButton\n theme=\"primary\"\n variant=\"text\"\n size=\"small\"\n onClick={() => props.onChange(dayjs().format(props.format))}\n >\n {globalConfig.value.now}\n </TButton>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n },\n});\n"],"names":["dayjs","name","props","isFooterDisplay","handleConfirmClick","onChange","nextTick","onMounted","panelColUpdate","watch","_createVNode","_mergeProps"],"mappings":"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"}