{"version":3,"file":"Picker.cjs","sources":["../../../../../../packages/vue-components/vc-picker/src/Picker.tsx"],"sourcesContent":["/**\n * Removed:\n *  - getCalendarContainer: use `getPopupContainer` instead\n *  - onOk\n *\n * New Feature:\n *  - picker\n *  - allowEmpty\n *  - selectable\n *\n * Tips: Should add faq about `datetime` mode with `defaultValue`\n */\n\nimport type { ChangeEvent, FocusEventHandler, MouseEventHandler, VueNode } from '@antdv/types';\nimport type { CSSProperties, HTMLAttributes, Ref } from 'vue';\nimport type { AlignType } from '../../vc-align/src/interface';\nimport type { CustomFormat, PanelMode, PickerMode, PresetDate, RangeValue } from './interface';\nimport type { ContextOperationRefProps } from './PanelContext';\nimport type { SharedTimeProps } from './panels/TimePanel';\nimport type { PickerPanelBaseProps, PickerPanelDateProps, PickerPanelTimeProps } from './PickerPanel';\nimport { useMergedState } from '@antdv/hooks';\nimport { classNames, warning } from '@antdv/utils';\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\nimport useHoverValue from './hooks/useHoverValue';\nimport usePickerInput from './hooks/usePickerInput';\nimport usePresets from './hooks/usePresets';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport useValueTexts from './hooks/useValueTexts';\nimport { useProvidePanel } from './PanelContext';\nimport PickerPanel from './PickerPanel';\nimport PickerTrigger from './PickerTrigger';\nimport PresetPanel from './PresetPanel';\nimport { formatValue, isEqual, parseValue } from './utils/dateUtil';\nimport getDataOrAriaProps, { toArray } from './utils/miscUtil';\nimport { elementsContains, getDefaultFormat, getInputSize } from './utils/uiUtil';\nimport { legacyPropsWarning } from './utils/warnUtil';\n\nexport interface PickerRefConfig {\n  focus: () => void;\n  blur: () => void;\n}\n\nexport interface PickerSharedProps<DateType> {\n  dropdownClassName?: string;\n  dropdownAlign?: AlignType;\n  popupStyle?: CSSProperties;\n  transitionName?: string;\n  placeholder?: string;\n  allowClear?: boolean;\n  autofocus?: boolean;\n  disabled?: boolean;\n  tabindex?: number;\n  open?: boolean;\n  defaultOpen?: boolean;\n  /** Make input readOnly to avoid popup keyboard in mobile */\n  inputReadOnly?: boolean;\n  id?: string;\n\n  presets?: Array<PresetDate<DateType>>;\n\n  // Value\n  format?: string | CustomFormat<DateType> | Array<string | CustomFormat<DateType>>;\n\n  // Render\n  suffixIcon?: VueNode;\n  clearIcon?: VueNode;\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n  getPopupContainer?: (node: HTMLElement) => HTMLElement;\n  panelRender?: (originPanel: VueNode) => VueNode;\n  inputRender?: (props: HTMLAttributes) => VueNode;\n\n  // Events\n  onChange?: (value: DateType | null, dateString: string) => void;\n  onOpenChange?: (open: boolean) => void;\n  onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => void;\n  onFocus?: FocusEventHandler;\n  onBlur?: FocusEventHandler;\n  onMousedown?: MouseEventHandler;\n  onMouseup?: MouseEventHandler;\n  onMouseenter?: MouseEventHandler;\n  onMouseleave?: MouseEventHandler;\n  onClick?: MouseEventHandler;\n  onContextmenu?: MouseEventHandler;\n  onKeydown?: (event: KeyboardEvent, preventDefault: () => void) => void;\n\n  // WAI-ARIA\n  role?: string;\n  name?: string;\n\n  autocomplete?: string;\n  direction?: 'ltr' | 'rtl';\n  showToday?: boolean;\n  showTime?: boolean | SharedTimeProps<DateType>;\n}\n\ntype OmitPanelProps<Props> = Omit<\n  Props,\n  'onChange' | 'hideHeader' | 'pickerValue' | 'onPickerValueChange'\n>;\n\nexport type PickerBaseProps<DateType> = {} & PickerSharedProps<DateType> &\n  OmitPanelProps<PickerPanelBaseProps<DateType>>;\n\nexport type PickerDateProps<DateType> = {} & PickerSharedProps<DateType> &\n  OmitPanelProps<PickerPanelDateProps<DateType>>;\n\nexport type PickerTimeProps<DateType> = {\n  picker: 'time';\n  /**\n   * @deprecated Please use `defaultValue` directly instead\n   * since `defaultOpenValue` will confuse user of current value status\n   */\n  defaultOpenValue?: DateType;\n} & PickerSharedProps<DateType> &\n  Omit<OmitPanelProps<PickerPanelTimeProps<DateType>>, 'format'>;\n\nexport type PickerProps<DateType> =\n  | PickerBaseProps<DateType>\n  | PickerDateProps<DateType>\n  | PickerTimeProps<DateType>;\n\n// TMP type to fit for ts 3.9.2\ntype OmitType<DateType> = Omit<PickerBaseProps<DateType>, 'picker'> &\n  Omit<PickerDateProps<DateType>, 'picker'> &\n  Omit<PickerTimeProps<DateType>, 'picker'>;\ntype MergedPickerProps<DateType> = {\n  picker?: PickerMode;\n} & OmitType<DateType>;\n\nfunction Picker<DateType>() {\n  return defineComponent<MergedPickerProps<DateType>>({\n    name: 'Picker',\n    inheritAttrs: false,\n    props: [\n      'prefixCls',\n      'id',\n      'tabindex',\n      'dropdownClassName',\n      'dropdownAlign',\n      'popupStyle',\n      'transitionName',\n      'generateConfig',\n      'locale',\n      'inputReadOnly',\n      'allowClear',\n      'autofocus',\n      'showTime',\n      'showNow',\n      'showHour',\n      'showMinute',\n      'showSecond',\n      'picker',\n      'format',\n      'use12Hours',\n      'value',\n      'defaultValue',\n      'open',\n      'defaultOpen',\n      'defaultOpenValue',\n      'suffixIcon',\n      'presets',\n      'clearIcon',\n      'disabled',\n      'disabledDate',\n      'placeholder',\n      'getPopupContainer',\n      'panelRender',\n      'inputRender',\n      'onChange',\n      'onOpenChange',\n      'onPanelChange',\n      'onFocus',\n      'onBlur',\n      'onMousedown',\n      'onMouseup',\n      'onMouseenter',\n      'onMouseleave',\n      'onContextmenu',\n      'onClick',\n      'onKeydown',\n      'onSelect',\n      'direction',\n      'autocomplete',\n      'showToday',\n      'renderExtraFooter',\n      'dateRender',\n      'minuteStep',\n      'hourStep',\n      'secondStep',\n      'hideDisabledOptions',\n    ] as any,\n    setup(props, { attrs, expose }) {\n      const inputRef = ref(null);\n      const presets = computed(() => props.presets);\n      const presetList = usePresets(presets);\n      const picker = computed(() => props.picker ?? 'date');\n      const needConfirmButton = computed(\n        () => (picker.value === 'date' && !!props.showTime) || picker.value === 'time',\n      );\n      // ============================ Warning ============================\n      if (process.env.NODE_ENV !== 'production')\n        legacyPropsWarning(props);\n\n      // ============================= State =============================\n      const formatList = computed(() =>\n        toArray(getDefaultFormat(props.format, picker.value, props.showTime, props.use12Hours)),\n      );\n\n      // Panel ref\n      const panelDivRef = ref<HTMLDivElement>(null);\n      const inputDivRef = ref<HTMLDivElement>(null);\n      const containerRef = ref<HTMLDivElement>(null);\n\n      // Real value\n      const [mergedValue, setInnerValue] = useMergedState<DateType>(null, {\n        value: toRef(props, 'value'),\n        defaultValue: props.defaultValue,\n      });\n      const selectedValue = ref(mergedValue.value) as Ref<DateType>;\n      const setSelectedValue = (val: DateType) => {\n        selectedValue.value = val;\n      };\n\n      // Operation ref\n      const operationRef = ref<ContextOperationRefProps>(null);\n\n      // Open\n      const [mergedOpen, triggerInnerOpen] = useMergedState(false, {\n        value: toRef(props, 'open'),\n        defaultValue: props.defaultOpen,\n        postState: postOpen => (props.disabled ? false : postOpen),\n        onChange: (newOpen) => {\n          if (props.onOpenChange)\n            props.onOpenChange(newOpen);\n\n          if (!newOpen && operationRef.value && operationRef.value.onClose)\n            operationRef.value.onClose();\n        },\n      });\n\n      // ============================= Text ==============================\n      const [valueTexts, firstValueText] = useValueTexts(selectedValue, {\n        formatList,\n        generateConfig: toRef(props, 'generateConfig'),\n        locale: toRef(props, 'locale'),\n      });\n      const [text, triggerTextChange, resetText] = useTextValueMapping({\n        valueTexts,\n        onTextChange: (newText) => {\n          const inputDate = parseValue(newText, {\n            locale: props.locale,\n            formatList: formatList.value,\n            generateConfig: props.generateConfig,\n          });\n          if (inputDate && (!props.disabledDate || !props.disabledDate(inputDate)))\n            setSelectedValue(inputDate);\n        },\n      });\n\n      // ============================ Trigger ============================\n      const triggerChange = (newValue: DateType | (() => DateType) | null) => {\n        const { onChange, generateConfig, locale } = props;\n        if (typeof newValue === 'function')\n          newValue = (newValue as () => DateType)();\n\n        setSelectedValue(newValue);\n        setInnerValue(newValue);\n\n        if (onChange && !isEqual(generateConfig, mergedValue.value, newValue)) {\n          onChange(\n            newValue,\n            newValue\n              ? formatValue(newValue, { generateConfig, locale, format: formatList.value[0] })\n              : '',\n          );\n        }\n      };\n\n      const triggerOpen = (newOpen: boolean) => {\n        if (props.disabled && newOpen)\n          return;\n\n        triggerInnerOpen(newOpen);\n      };\n\n      const forwardKeydown = (e: KeyboardEvent) => {\n        if (mergedOpen.value && operationRef.value && operationRef.value.onKeydown) {\n          // Let popup panel handle keyboard\n          return operationRef.value.onKeydown(e);\n        }\n\n        /* istanbul ignore next */\n        /* eslint-disable no-lone-blocks */\n        {\n          warning(\n            false,\n            'Picker not correct forward Keydown operation. Please help to fire issue about this.',\n          );\n          return false;\n        }\n      };\n\n      const onInternalMouseup: MouseEventHandler = (...args) => {\n        if (props.onMouseup)\n          props.onMouseup(...args);\n\n        if (inputRef.value) {\n          inputRef.value.focus();\n          triggerOpen(true);\n        }\n      };\n\n      // ============================= Input =============================\n      const [inputProps, { focused, typing }] = usePickerInput({\n        blurToCancel: needConfirmButton,\n        open: mergedOpen,\n        value: text,\n        triggerOpen,\n        forwardKeydown,\n        isClickOutside: target =>\n          !elementsContains(\n            [panelDivRef.value, inputDivRef.value, containerRef.value],\n            target as HTMLElement,\n          ),\n        onSubmit: () => {\n          if (\n            // When user typing disabledDate with keyboard and enter, this value will be empty\n            !selectedValue.value\n            // Normal disabled check\n            || (props.disabledDate && props.disabledDate(selectedValue.value))\n          ) {\n            return false;\n          }\n\n          triggerChange(selectedValue.value);\n          triggerOpen(false);\n          resetText();\n          return true;\n        },\n        onCancel: () => {\n          triggerOpen(false);\n          setSelectedValue(mergedValue.value);\n          resetText();\n        },\n        onKeydown: (e, preventDefault) => {\n          props.onKeydown?.(e, preventDefault);\n        },\n        onFocus: (e: FocusEvent) => {\n          props.onFocus?.(e);\n        },\n        onBlur: (e: FocusEvent) => {\n          props.onBlur?.(e);\n        },\n      });\n\n      // ============================= Sync ==============================\n      // Close should sync back with text value\n      watch([mergedOpen, valueTexts], () => {\n        if (!mergedOpen.value) {\n          setSelectedValue(mergedValue.value);\n\n          if (!valueTexts.value.length || valueTexts.value[0] === '')\n            triggerTextChange('');\n          else if (firstValueText.value !== text.value)\n            resetText();\n        }\n      });\n\n      // Change picker should sync back with text value\n      watch(picker, () => {\n        if (!mergedOpen.value)\n          resetText();\n      });\n\n      // Sync innerValue with control mode\n      watch(mergedValue, () => {\n        // Sync select value\n        setSelectedValue(mergedValue.value);\n      });\n\n      const [hoverValue, onEnter, onLeave] = useHoverValue(text, {\n        formatList,\n        generateConfig: toRef(props, 'generateConfig'),\n        locale: toRef(props, 'locale'),\n      });\n\n      const onContextSelect = (date: DateType, type: 'key' | 'mouse' | 'submit') => {\n        if (type === 'submit' || (type !== 'key' && !needConfirmButton.value)) {\n          // triggerChange will also update selected values\n          triggerChange(date);\n          triggerOpen(false);\n        }\n      };\n\n      useProvidePanel({\n        operationRef,\n        hideHeader: computed(() => picker.value === 'time'),\n        onSelect: onContextSelect,\n        open: mergedOpen,\n        defaultOpenValue: toRef(props, 'defaultOpenValue'),\n        onDateMouseenter: onEnter,\n        onDateMouseleave: onLeave,\n      });\n\n      expose({\n        focus: () => {\n          if (inputRef.value)\n            inputRef.value.focus();\n        },\n        blur: () => {\n          if (inputRef.value)\n            inputRef.value.blur();\n        },\n      });\n\n      return () => {\n        const {\n          prefixCls = 'rc-picker',\n          id,\n          tabindex,\n          dropdownClassName,\n          dropdownAlign,\n          popupStyle,\n          transitionName,\n          generateConfig,\n          locale,\n          inputReadOnly,\n          allowClear,\n          autofocus,\n          picker = 'date',\n          defaultOpenValue,\n          suffixIcon,\n          clearIcon,\n          disabled,\n          placeholder,\n          getPopupContainer,\n          panelRender,\n          onMousedown,\n          onMouseenter,\n          onMouseleave,\n          onContextmenu,\n          onClick,\n          onSelect,\n          direction,\n          autocomplete = 'off',\n        } = props;\n        // ============================= Panel =============================\n        const panelProps = {\n          // Remove `picker` & `format` here since TimePicker is little different with other panel\n          ...(props as Omit<MergedPickerProps<DateType>, 'picker' | 'format'>),\n          ...attrs,\n          class: classNames({\n            [`${prefixCls}-panel-focused`]: !typing.value,\n          }),\n          style: undefined,\n          pickerValue: undefined,\n          onPickerValueChange: undefined,\n          onChange: null,\n        };\n\n        let panelNode: VueNode = (\n          <div class={`${prefixCls}-panel-layout`}>\n            <PresetPanel\n              prefixCls={prefixCls}\n              presets={presetList.value}\n              onClick={(nextValue) => {\n                triggerChange(nextValue);\n                triggerOpen(false);\n              }}\n            />\n            <PickerPanel\n              {...panelProps}\n              generateConfig={generateConfig}\n              value={selectedValue.value}\n              locale={locale}\n              tabindex={-1}\n              onSelect={(date) => {\n                onSelect?.(date);\n                setSelectedValue(date);\n              }}\n              direction={direction}\n              onPanelChange={(viewDate, mode) => {\n                const { onPanelChange } = props;\n                onLeave(true);\n                onPanelChange?.(viewDate, mode);\n              }}\n            />\n          </div>\n        );\n\n        if (panelRender)\n          panelNode = panelRender(panelNode);\n\n        const panel = (\n          <div\n            class={`${prefixCls}-panel-container`}\n            ref={panelDivRef}\n            onMousedown={(e) => {\n              e.preventDefault();\n            }}\n          >\n            {panelNode}\n          </div>\n        );\n\n        let suffixNode: VueNode;\n        if (suffixIcon)\n          suffixNode = <span class={`${prefixCls}-suffix`}>{suffixIcon}</span>;\n\n        let clearNode: VueNode;\n        if (allowClear && mergedValue.value && !disabled) {\n          clearNode = (\n            <span\n              onMousedown={(e) => {\n                e.preventDefault();\n                e.stopPropagation();\n              }}\n              onMouseup={(e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                triggerChange(null);\n                triggerOpen(false);\n              }}\n              class={`${prefixCls}-clear`}\n              role=\"button\"\n            >\n              {clearIcon || <span class={`${prefixCls}-clear-btn`} />}\n            </span>\n          );\n        }\n\n        const mergedInputProps: HTMLAttributes = {\n          id,\n          tabindex,\n          disabled,\n          readonly: inputReadOnly || typeof formatList.value[0] === 'function' || !typing.value,\n          value: hoverValue.value || text.value,\n          onInput: (e: ChangeEvent) => {\n            triggerTextChange(e.target.value);\n          },\n          autofocus,\n          placeholder,\n          ref: inputRef,\n          title: text.value,\n          ...inputProps.value,\n          size: getInputSize(picker, formatList.value[0], generateConfig),\n          ...getDataOrAriaProps(props),\n          autocomplete,\n        };\n\n        const inputNode = props.inputRender\n          ? (\n              props.inputRender(mergedInputProps)\n            )\n          : (\n              <input {...mergedInputProps} />\n            );\n\n        // ============================ Warning ============================\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            !defaultOpenValue,\n            '`defaultOpenValue` may confuse user for the current value status. Please use `defaultValue` instead.',\n          );\n        }\n\n        // ============================ Return =============================\n\n        const popupPlacement = direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n        return (\n          <div\n            ref={containerRef}\n            class={classNames(prefixCls, attrs.class, {\n              [`${prefixCls}-disabled`]: disabled,\n              [`${prefixCls}-focused`]: focused.value,\n              [`${prefixCls}-rtl`]: direction === 'rtl',\n            })}\n            style={attrs.style as CSSProperties}\n            onMousedown={onMousedown}\n            onMouseup={onInternalMouseup}\n            onMouseenter={onMouseenter}\n            onMouseleave={onMouseleave}\n            onContextmenu={onContextmenu}\n            onClick={onClick}\n          >\n            <div\n              class={classNames(`${prefixCls}-input`, {\n                [`${prefixCls}-input-placeholder`]: !!hoverValue.value,\n              })}\n              ref={inputDivRef}\n            >\n              {inputNode}\n              {suffixNode}\n              {clearNode}\n            </div>\n            <PickerTrigger\n              visible={mergedOpen.value}\n              popupStyle={popupStyle}\n              prefixCls={prefixCls}\n              dropdownClassName={dropdownClassName}\n              dropdownAlign={dropdownAlign}\n              getPopupContainer={getPopupContainer}\n              transitionName={transitionName}\n              popupPlacement={popupPlacement}\n              direction={direction}\n              v-slots={{\n                popupElement: () => panel,\n              }}\n            >\n              <div\n                style={{\n                  pointerEvents: 'none',\n                  position: 'absolute',\n                  top: 0,\n                  bottom: 0,\n                  left: 0,\n                  right: 0,\n                }}\n              >\n              </div>\n            </PickerTrigger>\n          </div>\n        );\n      };\n    },\n  });\n}\nexport default Picker<any>();\n"],"names":["Picker","defineComponent","name","inheritAttrs","props","setup","attrs","expose","inputRef","ref","presets","computed","presetList","usePresets","picker","needConfirmButton","value","showTime","process","env","NODE_ENV","legacyPropsWarning","formatList","toArray","getDefaultFormat","format","use12Hours","panelDivRef","inputDivRef","containerRef","mergedValue","setInnerValue","useMergedState","toRef","defaultValue","selectedValue","setSelectedValue","val","operationRef","mergedOpen","triggerInnerOpen","defaultOpen","postState","postOpen","disabled","onChange","newOpen","onOpenChange","onClose","valueTexts","firstValueText","useValueTexts","generateConfig","locale","text","triggerTextChange","resetText","useTextValueMapping","onTextChange","newText","inputDate","parseValue","disabledDate","triggerChange","newValue","isEqual","formatValue","triggerOpen","forwardKeydown","e","onKeydown","warning","onInternalMouseup","args","onMouseup","focus","inputProps","focused","typing","usePickerInput","blurToCancel","open","isClickOutside","target","elementsContains","onSubmit","onCancel","preventDefault","onFocus","onBlur","watch","length","hoverValue","onEnter","onLeave","useHoverValue","onContextSelect","date","type","useProvidePanel","hideHeader","onSelect","defaultOpenValue","onDateMouseenter","onDateMouseleave","blur","prefixCls","id","tabindex","dropdownClassName","dropdownAlign","popupStyle","transitionName","inputReadOnly","allowClear","autofocus","suffixIcon","clearIcon","placeholder","getPopupContainer","panelRender","onMousedown","onMouseenter","onMouseleave","onContextmenu","onClick","direction","autocomplete","panelProps","class","classNames","style","undefined","pickerValue","onPickerValueChange","panelNode","_createVNode","PresetPanel","nextValue","PickerPanel","onPanelChange","viewDate","mode","panel","suffixNode","clearNode","stopPropagation","mergedInputProps","readonly","onInput","title","size","getInputSize","getDataOrAriaProps","inputNode","inputRender","popupPlacement","PickerTrigger","default","pointerEvents","position","top","bottom","left","right","popupElement"],"mappings":"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"}