tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 13.8 kB
Source Map (JSON)
{"version":3,"file":"time-picker.mjs","sources":["../../../components/time-picker/time-picker.tsx"],"sourcesContent":["import { computed, ComputedRef, 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';\n// hooks\nimport {\n useVModel,\n useConfig,\n useTNodeJSX,\n useDisabled,\n useReadonly,\n useGlobalIcon,\n usePrefixClass,\n useCommonClassName,\n useEventForward,\n} from '@tdesign/shared-hooks';\nimport type { InputProps } from '../input';\n\nimport props from './props';\n\nimport { TdTimePickerProps } from './type';\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 isDisabled = useDisabled() as ComputedRef<boolean>;\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 props?.onClear?.(context);\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 = (e: MouseEvent) => {\n props?.onConfirm?.({ e });\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 const selectEvents = useEventForward(props.selectInputProps as TdTimePickerProps['selectInputProps'], {\n onInputChange: handleInputChange,\n onBlur: handleInputBlur,\n onPopupVisibleChange: handleShowPopup,\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={isDisabled.value}\n clearable={props.clearable}\n allowInput={allowInput.value}\n class={inputClasses.value}\n label={props.label}\n prefixIcon={() => renderTNodeJSX('prefixIcon')}\n suffixIcon={() => renderTNodeJSX('suffixIcon') || <TimeIcon />}\n popupVisible={!isReadonly.value && isShowPanel.value}\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 {...selectEvents.value}\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","isDisabled","useDisabled","_toRefs2","allowInput","format","inputClasses","computed","concat","_defineProperty","focused","handleShowPopup","visible","context","_props2$onOpen","_props2$onClose","onOpen","onClose","handleClear","_props2$onClear","e","stopPropagation","onClear","handleInputChange","handleInputBlur","_props2$onBlur","isValidTime","validateInputValue","formatInputValue","onBlur","inputValue","handleClickConfirm","_props2$onConfirm","onConfirm","handlePanelChange","v","_props2$onPick","onPick","valueDisplayParams","_innerValue$value","watch","_innerValue$value2","selectEvents","useEventForward","selectInputProps","onInputChange","onPopupVisibleChange","_innerValue$value3","_innerValue$value4","_createVNode","TSelectInput","_mergeProps","onFocus","borderless","clearable","label","prefixIcon","suffixIcon","placeholder","_objectSpread","inputProps","size","overlayInnerStyle","width","padding","popupProps","status","tips","valueDisplay","params","panel","TimePickerPanel","steps","disableTime","hideDisabledTime","presets"],"mappings":"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"}