{"version":3,"file":"time-picker.mjs","sources":["../../src/time-picker/time-picker.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, watch } from 'vue';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport TimePickerPanel from './panel/time-picker-panel';\nimport TSelectInput, { TdSelectInputProps } from '../select-input';\nimport { formatInputValue, validateInputValue } from '../_common/js/time-picker/utils';\n\nimport type { InputProps } from '../input';\n\nimport props from './props';\n\n// hooks\nimport useVModel from '../hooks/useVModel';\nimport { useFormDisabled } from '../form/hooks';\nimport { useConfig, usePrefixClass } from '../hooks/useConfig';\n\ndayjs.extend(customParseFormat);\n\nexport default defineComponent({\n  name: 'XTimePicker',\n\n  props: { ...props },\n\n  setup(props) {\n    const currentValue = ref('');\n    const isShowPanel = ref(false);\n    const { globalConfig } = useConfig('timePicker');\n    const { value, modelValue } = toRefs(props);\n    const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n    const disabled = useFormDisabled();\n    const { allowInput, format } = toRefs(props);\n    const { classPrefix } = useConfig('classPrefix');\n\n    const componentName = usePrefixClass('time-picker');\n\n    const inputClasses = computed(() => [\n      `${componentName.value}__group`,\n      {\n        [`${classPrefix.value}-is-focused`]: isShowPanel.value,\n      },\n    ]);\n\n    const handleShowPopup = (visible: boolean, context: { e: MouseEvent }) => {\n      isShowPanel.value = visible;\n      visible ? props.onOpen?.(context) : props.onClose?.(context); // trigger on-open and on-close\n    };\n\n    const handleClear = (context: { e: MouseEvent }) => {\n      const { e } = context;\n      e.stopPropagation();\n      currentValue.value = null;\n      setInnerValue(null);\n    };\n\n    const handleInputChange = (value: string) => {\n      currentValue.value = value;\n    };\n\n    const handleInputBlur: TdSelectInputProps['onBlur'] = (value, { e }) => {\n      if (allowInput.value) {\n        const isValidTime = validateInputValue(currentValue.value, format.value);\n        if (isValidTime) {\n          setInnerValue(formatInputValue(currentValue.value, format.value));\n        }\n      }\n      props.onBlur?.({ value: String(value), e: e as FocusEvent });\n    };\n\n    const handleClickConfirm = () => {\n      const isValidTime = validateInputValue(currentValue.value, format.value);\n      if (isValidTime) setInnerValue(currentValue.value);\n      isShowPanel.value = false;\n    };\n\n    const handlePanelChange = (v: string, e: MouseEvent) => {\n      currentValue.value = v;\n      props.onPick?.(v, { e });\n    };\n\n    watch(\n      () => isShowPanel.value,\n      () => {\n        currentValue.value = isShowPanel.value ? innerValue.value ?? '' : '';\n      },\n    );\n\n    return () => (\n      <div class={componentName.value}>\n        <TSelectInput\n          onFocus={props.onFocus}\n          onClear={handleClear}\n          disabled={disabled.value}\n          clearable={props.clearable}\n          allowInput={allowInput.value}\n          className={inputClasses.value}\n          suffixIcon={() => <icon-ri-time-line />}\n          popupVisible={isShowPanel.value}\n          onInputChange={handleInputChange}\n          onBlur={handleInputBlur}\n          onPopupVisibleChange={handleShowPopup}\n          placeholder={!innerValue.value ? props.placeholder || globalConfig.value.placeholder : undefined}\n          value={isShowPanel.value ? currentValue.value : innerValue.value ?? undefined}\n          inputValue={isShowPanel.value ? currentValue.value : innerValue.value ?? undefined}\n          inputProps={{ ...(props.inputProps as InputProps), size: props.size }}\n          popupProps={{ overlayInnerStyle: { width: 'auto', padding: 0 }, ...(props.popupProps as object) }}\n          status={props.status}\n          tips={props.tips}\n          panel={() => (\n            <TimePickerPanel\n              steps={props.steps}\n              format={format.value}\n              value={currentValue.value}\n              isFooterDisplay={true}\n              isShowPanel={isShowPanel.value}\n              disableTime={props.disableTime}\n              onChange={handlePanelChange}\n              hideDisabledTime={props.hideDisabledTime}\n              handleConfirmClick={handleClickConfirm}\n            />\n          )}\n        />\n      </div>\n    );\n  },\n});\n"],"names":["dayjs","name","props","innerValue","setInnerValue","visible","value","e","watch","currentValue","_createVNode","_resolveComponent","overlayInnerStyle","width","padding"],"mappings":"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"}