{"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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"}