UNPKG

tdesign-vue-next

Version:
1 lines 12.9 kB
{"version":3,"file":"time-picker.mjs","sources":["../../../components/time-picker/time-picker.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, watch } from 'vue';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { TimeIcon as TdTimeIcon } from 'tdesign-icons-vue-next';\n\nimport TimePickerPanel from './panel/time-picker-panel';\nimport TSelectInput, { SelectInputBlurContext } from '../select-input';\nimport { formatInputValue, validateInputValue } from '@tdesign/common-js/time-picker/utils';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport type { InputProps } from '../input';\n\nimport props from './props';\n\n// hooks\nimport useVModel from '../hooks/useVModel';\nimport { useDisabled } from '../hooks/useDisabled';\nimport { useCommonClassName, useConfig, usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { TdTimePickerProps } from './type';\nimport { useReadonly } from '../hooks/useReadonly';\n\ndayjs.extend(customParseFormat);\n\nexport default defineComponent({\n name: 'TTimePicker',\n props,\n setup(props) {\n const renderTNodeJSX = useTNodeJSX();\n const { globalConfig } = useConfig('timePicker');\n const COMPONENT_NAME = usePrefixClass('time-picker');\n const { STATUS } = useCommonClassName();\n const { TimeIcon } = useGlobalIcon({ TimeIcon: TdTimeIcon });\n\n const currentValue = ref('');\n const isShowPanel = ref(false);\n const isReadonly = useReadonly();\n\n const { value, modelValue } = toRefs(props);\n const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const disabled = useDisabled();\n const { allowInput, format } = toRefs(props);\n\n const inputClasses = computed(() => [\n `${COMPONENT_NAME.value}__group`,\n {\n [STATUS.value.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 = (value: string, context: SelectInputBlurContext) => {\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, inputValue: context.inputValue, e: context.e });\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 const valueDisplayParams = computed(() => {\n return {\n value: isShowPanel.value ? currentValue.value : innerValue.value ?? undefined,\n };\n });\n\n watch(\n () => isShowPanel.value,\n () => {\n currentValue.value = isShowPanel.value ? innerValue.value ?? '' : '';\n },\n );\n\n return () => (\n <div class={COMPONENT_NAME.value}>\n <TSelectInput\n onFocus={props.onFocus}\n onClear={handleClear}\n borderless={props.borderless}\n disabled={disabled.value}\n clearable={props.clearable}\n allowInput={allowInput.value}\n class={inputClasses.value}\n label={props.label}\n suffixIcon={() => <TimeIcon />}\n popupVisible={!isReadonly.value && 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 valueDisplay={() => renderTNodeJSX('valueDisplay', { params: valueDisplayParams.value })}\n {...(props.selectInputProps as TdTimePickerProps['selectInputProps'])}\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 presets={props.presets}\n />\n )}\n />\n </div>\n );\n },\n});\n"],"names":["dayjs","extend","customParseFormat","defineComponent","name","props","setup","renderTNodeJSX","useTNodeJSX","_useConfig","useConfig","globalConfig","COMPONENT_NAME","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","_useGlobalIcon","useGlobalIcon","TimeIcon","TdTimeIcon","currentValue","ref","isShowPanel","isReadonly","useReadonly","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","disabled","useDisabled","_toRefs2","allowInput","format","inputClasses","computed","concat","_defineProperty","focused","handleShowPopup","visible","context","_props2$onOpen","_props2$onClose","onOpen","onClose","handleClear","e","stopPropagation","handleInputChange","handleInputBlur","_props2$onBlur","isValidTime","validateInputValue","formatInputValue","onBlur","inputValue","handleClickConfirm","handlePanelChange","v","_props2$onPick","onPick","valueDisplayParams","_innerValue$value","watch","_innerValue$value2","_innerValue$value3","_innerValue$value4","_createVNode","TSelectInput","_mergeProps","onFocus","borderless","clearable","label","suffixIcon","placeholder","_objectSpread","inputProps","size","overlayInnerStyle","width","padding","popupProps","status","tips","valueDisplay","params","selectInputProps","panel","TimePickerPanel","steps","disableTime","hideDisabledTime","presets"],"mappings":"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"}