{"version":3,"file":"PickerPanel.mjs","sources":["../../../../../../packages/vue-components/vc-picker/src/PickerPanel.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\n\n/**\n * Logic:\n *  When `mode` === `picker`,\n *  click will trigger `onSelect` (if value changed trigger `onChange` also).\n *  Panel change will not trigger `onSelect` but trigger `onPanelChange`\n */\nimport type { CSSProperties } from 'vue';\nimport type { GenerateConfig } from './generate';\nimport type {\n  Components,\n  DisabledTime,\n  Locale,\n  OnPanelChange,\n  PanelMode,\n  PanelRefProps,\n  PickerMode,\n} from './interface';\nimport type { DateRender } from './panels/DatePanel/DateBody';\nimport type { MonthCellRender } from './panels/MonthPanel/MonthBody';\nimport type { SharedTimeProps } from './panels/TimePanel';\nimport { useMergedState } from '@antdv/hooks';\nimport { classNames, KeyCode, warning } from '@antdv/utils';\nimport {\n  computed,\n  createVNode,\n  defineComponent,\n  ref,\n  toRef,\n  watch,\n  watchEffect,\n} from 'vue';\nimport { useInjectPanel, useProvidePanel } from './PanelContext';\nimport DatePanel from './panels/DatePanel';\nimport DatetimePanel from './panels/DatetimePanel';\nimport DecadePanel from './panels/DecadePanel';\nimport MonthPanel from './panels/MonthPanel';\nimport QuarterPanel from './panels/QuarterPanel';\nimport TimePanel from './panels/TimePanel';\nimport WeekPanel from './panels/WeekPanel';\nimport YearPanel from './panels/YearPanel';\nimport { useInjectRange } from './RangeContext';\nimport { isEqual } from './utils/dateUtil';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport { getLowerBoundTime, setDateTime, setTime } from './utils/timeUtil';\nimport { PickerModeMap } from './utils/uiUtil';\n\nexport interface PickerPanelSharedProps<DateType> {\n  prefixCls?: string;\n  // className?: string;\n  // style?: React.CSSProperties;\n  /** @deprecated Will be removed in next big version. Please use `mode` instead */\n  mode?: PanelMode;\n  tabindex?: number;\n\n  // Locale\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n\n  // Value\n  value?: DateType | null;\n  defaultValue?: DateType;\n  /** [Legacy] Set default display picker view date */\n  pickerValue?: DateType;\n  /** [Legacy] Set default display picker view date */\n  defaultPickerValue?: DateType;\n\n  // Date\n  disabledDate?: (date: DateType) => boolean;\n\n  // Render\n  dateRender?: DateRender<DateType>;\n  monthCellRender?: MonthCellRender<DateType>;\n  renderExtraFooter?: (mode: PanelMode) => VueNode;\n\n  // Event\n  onSelect?: (value: DateType) => void;\n  onChange?: (value: DateType) => void;\n  onPanelChange?: OnPanelChange<DateType>;\n  onMousedown?: (e: MouseEvent) => void;\n  onOk?: (date: DateType) => void;\n\n  direction?: 'ltr' | 'rtl';\n\n  /** @private This is internal usage. Do not use in your production env */\n  hideHeader?: boolean;\n  /** @private This is internal usage. Do not use in your production env */\n  onPickerValueChange?: (date: DateType) => void;\n\n  /** @private Internal usage. Do not use in your production env */\n  components?: Components;\n}\n\nexport type PickerPanelBaseProps<DateType> = {\n  picker: Exclude<PickerMode, 'date' | 'time'>;\n} & PickerPanelSharedProps<DateType>;\n\nexport type PickerPanelDateProps<DateType> = {\n  picker?: 'date';\n  showToday?: boolean;\n  showNow?: boolean;\n\n  // Time\n  showTime?: boolean | SharedTimeProps<DateType>;\n  disabledTime?: DisabledTime<DateType>;\n} & PickerPanelSharedProps<DateType>;\n\nexport type PickerPanelTimeProps<DateType> = {\n  picker: 'time';\n} & PickerPanelSharedProps<DateType> &\n  SharedTimeProps<DateType>;\n\nexport type PickerPanelProps<DateType> =\n  | PickerPanelBaseProps<DateType>\n  | PickerPanelDateProps<DateType>\n  | PickerPanelTimeProps<DateType>;\n\n// TMP type to fit for ts 3.9.2\ntype OmitType<DateType> = Omit<PickerPanelBaseProps<DateType>, 'picker'> &\n  Omit<PickerPanelDateProps<DateType>, 'picker'> &\n  Omit<PickerPanelTimeProps<DateType>, 'picker'>;\ntype MergedPickerPanelProps<DateType> = {\n  picker?: PickerMode;\n} & OmitType<DateType>;\n\nfunction PickerPanel<DateType>() {\n  return defineComponent<MergedPickerPanelProps<DateType>>({\n    name: 'PickerPanel',\n    inheritAttrs: false,\n    props: {\n      prefixCls: String,\n      locale: Object,\n      generateConfig: Object,\n      value: Object,\n      defaultValue: Object,\n      pickerValue: Object,\n      defaultPickerValue: Object,\n      disabledDate: Function,\n      mode: String,\n      picker: { type: String, default: 'date' },\n      tabindex: { type: [Number, String], default: 0 },\n      showNow: { type: Boolean, default: undefined },\n      showTime: [Boolean, Object],\n      showToday: Boolean,\n      renderExtraFooter: Function,\n      dateRender: Function,\n      hideHeader: { type: Boolean, default: undefined },\n      onSelect: Function,\n      onChange: Function,\n      onPanelChange: Function,\n      onMousedown: Function,\n      onPickerValueChange: Function,\n      onOk: Function,\n      components: Object,\n      direction: String,\n      hourStep: { type: Number, default: 1 },\n      minuteStep: { type: Number, default: 1 },\n      secondStep: { type: Number, default: 1 },\n    } as any,\n    setup(props, { attrs }) {\n      const needConfirmButton = computed(\n        () => (props.picker === 'date' && !!props.showTime) || props.picker === 'time',\n      );\n\n      const isHourStepValid = computed(() => 24 % props.hourStep === 0);\n      const isMinuteStepValid = computed(() => 60 % props.minuteStep === 0);\n      const isSecondStepValid = computed(() => 60 % props.secondStep === 0);\n      if (process.env.NODE_ENV !== 'production') {\n        watchEffect(() => {\n          const { generateConfig, value, hourStep = 1, minuteStep = 1, secondStep = 1 } = props;\n          warning(!value || generateConfig.isValidate(value), 'Invalidate date pass to `value`.');\n          warning(\n            !value || generateConfig.isValidate(value),\n            'Invalidate date pass to `defaultValue`.',\n          );\n          warning(\n            isHourStepValid.value,\n            `\\`hourStep\\` ${hourStep} is invalid. It should be a factor of 24.`,\n          );\n          warning(\n            isMinuteStepValid.value,\n            `\\`minuteStep\\` ${minuteStep} is invalid. It should be a factor of 60.`,\n          );\n          warning(\n            isSecondStepValid.value,\n            `\\`secondStep\\` ${secondStep} is invalid. It should be a factor of 60.`,\n          );\n        });\n      }\n\n      const panelContext = useInjectPanel();\n      const {\n        operationRef,\n        onSelect: onContextSelect,\n        hideRanges,\n        defaultOpenValue,\n      } = panelContext;\n      const { inRange, panelPosition, rangedValue, hoverRangedValue } = useInjectRange();\n      const panelRef = ref<PanelRefProps>({});\n      // Value\n      const [mergedValue, setInnerValue] = useMergedState<DateType | null>(null, {\n        value: toRef(props, 'value'),\n        defaultValue: props.defaultValue,\n        postState: (val) => {\n          if (!val && defaultOpenValue?.value && props.picker === 'time')\n            return defaultOpenValue.value;\n\n          return val;\n        },\n      });\n\n      // View date control\n      const [viewDate, setInnerViewDate] = useMergedState<DateType | null>(null, {\n        value: toRef(props, 'pickerValue'),\n        defaultValue: props.defaultPickerValue || mergedValue.value,\n        postState: (date) => {\n          const { generateConfig, showTime, defaultValue } = props;\n          const now = generateConfig.getNow();\n          if (!date) return now;\n          // When value is null and set showTime\n          if (!mergedValue.value && props.showTime) {\n            if (typeof showTime === 'object') {\n              return setDateTime(\n                generateConfig,\n                Array.isArray(date) ? date[0] : date,\n                showTime.defaultValue || now,\n              );\n            }\n            if (defaultValue) {\n              return setDateTime(\n                generateConfig,\n                Array.isArray(date) ? date[0] : date,\n                defaultValue,\n              );\n            }\n            return setDateTime(generateConfig, Array.isArray(date) ? date[0] : date, now);\n          }\n          return date;\n        },\n      });\n\n      const setViewDate = (date: DateType) => {\n        setInnerViewDate(date);\n        if (props.onPickerValueChange)\n          props.onPickerValueChange(date);\n      };\n\n      // Panel control\n      const getInternalNextMode = (nextMode: PanelMode): PanelMode => {\n        const getNextMode = PickerModeMap[props.picker!];\n        if (getNextMode)\n          return getNextMode(nextMode);\n\n        return nextMode;\n      };\n\n      // Save panel is changed from which panel\n      const [mergedMode, setInnerMode] = useMergedState(\n        () => {\n          if (props.picker === 'time')\n            return 'time';\n\n          return getInternalNextMode('date');\n        },\n        {\n          value: toRef(props, 'mode'),\n        },\n      );\n      watch(\n        () => props.picker,\n        () => {\n          setInnerMode(props.picker);\n        },\n      );\n\n      const sourceMode = ref(mergedMode.value);\n      const setSourceMode = (val: PanelMode) => {\n        sourceMode.value = val;\n      };\n\n      const onInternalPanelChange = (newMode: PanelMode | null, viewValue: DateType) => {\n        const { onPanelChange, generateConfig } = props;\n        const nextMode = getInternalNextMode(newMode || mergedMode.value);\n        setSourceMode(mergedMode.value);\n        setInnerMode(nextMode);\n\n        if (\n          onPanelChange\n          && (mergedMode.value !== nextMode || isEqual(generateConfig, viewDate.value, viewDate.value))\n        ) {\n          onPanelChange(viewValue, nextMode);\n        }\n      };\n\n      const triggerSelect = (\n        date: DateType,\n        type: 'key' | 'mouse' | 'submit',\n        forceTriggerSelect = false,\n      ) => {\n        const { picker, generateConfig, onSelect, onChange, disabledDate } = props;\n        if (mergedMode.value === picker || forceTriggerSelect) {\n          setInnerValue(date);\n\n          if (onSelect)\n            onSelect(date);\n\n          if (onContextSelect)\n            onContextSelect(date, type);\n\n          if (\n            onChange\n            && !isEqual(generateConfig, date, mergedValue.value)\n            && !disabledDate?.(date)\n          ) {\n            onChange(date);\n          }\n        }\n      };\n\n      // ========================= Interactive ==========================\n      const onInternalKeydown = (e: KeyboardEvent) => {\n        if (panelRef.value && panelRef.value.onKeydown) {\n          if (\n            [\n              KeyCode.LEFT,\n              KeyCode.RIGHT,\n              KeyCode.UP,\n              KeyCode.DOWN,\n              KeyCode.PAGE_UP,\n              KeyCode.PAGE_DOWN,\n              KeyCode.ENTER,\n            ].includes(e.which)\n          ) {\n            e.preventDefault();\n          }\n\n          return panelRef.value.onKeydown(e);\n        }\n\n        /* istanbul ignore next */\n        /* eslint-disable no-lone-blocks */\n        {\n          warning(\n            false,\n            'Panel not correct handle keyDown event. Please help to fire issue about this.',\n          );\n          return false;\n        }\n        /* eslint-enable no-lone-blocks */\n      };\n\n      const onInternalBlur = (e: FocusEvent) => {\n        if (panelRef.value && panelRef.value.onBlur)\n          panelRef.value.onBlur(e);\n      };\n      const onNow = () => {\n        const { generateConfig, hourStep, minuteStep, secondStep } = props;\n        const now = generateConfig.getNow();\n        const lowerBoundTime = getLowerBoundTime(\n          generateConfig.getHour(now),\n          generateConfig.getMinute(now),\n          generateConfig.getSecond(now),\n          isHourStepValid.value ? hourStep : 1,\n          isMinuteStepValid.value ? minuteStep : 1,\n          isSecondStepValid.value ? secondStep : 1,\n        );\n        const adjustedNow = setTime(\n          generateConfig,\n          now,\n          lowerBoundTime[0], // hour\n          lowerBoundTime[1], // minute\n          lowerBoundTime[2], // second\n        );\n        triggerSelect(adjustedNow, 'submit');\n      };\n\n      const classString = computed(() => {\n        const { prefixCls, direction } = props;\n        return classNames(`${prefixCls}-panel`, {\n          [`${prefixCls}-panel-has-range`]:\n            rangedValue && rangedValue.value && rangedValue.value[0] && rangedValue.value[1],\n          [`${prefixCls}-panel-has-range-hover`]:\n            hoverRangedValue\n            && hoverRangedValue.value\n            && hoverRangedValue.value[0]\n            && hoverRangedValue.value[1],\n          [`${prefixCls}-panel-rtl`]: direction === 'rtl',\n        });\n      });\n      useProvidePanel({\n        ...panelContext,\n        mode: mergedMode,\n        hideHeader: computed(() =>\n          props.hideHeader !== undefined ? props.hideHeader : panelContext.hideHeader?.value,\n        ),\n        hidePrevBtn: computed(() => inRange.value && panelPosition.value === 'right'),\n        hideNextBtn: computed(() => inRange.value && panelPosition.value === 'left'),\n      });\n\n      watch(\n        () => props.value,\n        () => {\n          if (props.value)\n            setInnerViewDate(props.value);\n        },\n      );\n\n      return () => {\n        const {\n          prefixCls = 'ant-picker',\n          locale,\n          generateConfig,\n          disabledDate,\n          picker = 'date',\n          tabindex = 0,\n          showNow,\n          showTime,\n          showToday,\n          renderExtraFooter,\n          onMousedown,\n          onOk,\n          components,\n        } = props;\n        if (operationRef && panelPosition.value !== 'right') {\n          operationRef.value = {\n            onKeydown: onInternalKeydown,\n            onClose: () => {\n              if (panelRef.value && panelRef.value.onClose)\n                panelRef.value.onClose();\n            },\n          };\n        }\n\n        // ============================ Panels ============================\n        let panelNode: VueNode;\n        const pickerProps = {\n          ...attrs,\n          ...(props as MergedPickerPanelProps<DateType>),\n          operationRef: panelRef,\n          prefixCls,\n          viewDate: viewDate.value,\n          value: mergedValue.value,\n          onViewDateChange: setViewDate,\n          sourceMode: sourceMode.value,\n          onPanelChange: onInternalPanelChange,\n          disabledDate,\n        };\n        delete pickerProps.onChange;\n        delete pickerProps.onSelect;\n        switch (mergedMode.value) {\n          case 'decade':\n            panelNode = (\n              <DecadePanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'year':\n            panelNode = (\n              <YearPanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'month':\n            panelNode = (\n              <MonthPanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'quarter':\n            panelNode = (\n              <QuarterPanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'week':\n            panelNode = (\n              <WeekPanel\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'time':\n            delete pickerProps.showTime;\n            panelNode = (\n              <TimePanel<DateType>\n                {...pickerProps}\n                {...(typeof showTime === 'object' ? showTime : null)}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          default:\n            if (showTime) {\n              panelNode = (\n                <DatetimePanel\n                  {...pickerProps}\n                  onSelect={(date, type) => {\n                    setViewDate(date);\n                    triggerSelect(date, type);\n                  }}\n                />\n              );\n            } else {\n              panelNode = (\n                <DatePanel<DateType>\n                  {...pickerProps}\n                  onSelect={(date, type) => {\n                    setViewDate(date);\n                    triggerSelect(date, type);\n                  }}\n                />\n              );\n            }\n        }\n\n        // ============================ Footer ============================\n        let extraFooter: VueNode;\n        let rangesNode: VueNode;\n\n        if (!hideRanges?.value) {\n          extraFooter = getExtraFooter(prefixCls, mergedMode.value, renderExtraFooter);\n          rangesNode = getRanges({\n            prefixCls,\n            components,\n            needConfirmButton: needConfirmButton.value,\n            okDisabled: !mergedValue.value || (disabledDate && disabledDate(mergedValue.value)),\n            locale,\n            showNow,\n            onNow: needConfirmButton.value && onNow,\n            onOk: () => {\n              if (mergedValue.value) {\n                triggerSelect(mergedValue.value, 'submit', true);\n                if (onOk)\n                  onOk(mergedValue.value);\n              }\n            },\n          });\n        }\n\n        let todayNode: VueNode;\n\n        if (showToday && mergedMode.value === 'date' && picker === 'date' && !showTime) {\n          const now = generateConfig.getNow();\n          const todayCls = `${prefixCls}-today-btn`;\n          const disabled = disabledDate && disabledDate(now);\n          todayNode = (\n            <a\n              class={classNames(todayCls, disabled && `${todayCls}-disabled`)}\n              aria-disabled={disabled}\n              onClick={() => {\n                if (!disabled)\n                  triggerSelect(now, 'mouse', true);\n              }}\n            >\n              {locale.today}\n            </a>\n          );\n        }\n        return (\n          <div\n            tabindex={tabindex}\n            class={classNames(classString.value, attrs.class)}\n            style={attrs.style as CSSProperties}\n            onKeydown={onInternalKeydown}\n            onBlur={onInternalBlur}\n            onMousedown={onMousedown}\n          >\n            {panelNode}\n            {extraFooter || rangesNode || todayNode\n              ? (\n                  <div class={`${prefixCls}-footer`}>\n                    {extraFooter}\n                    {rangesNode}\n                    {todayNode}\n                  </div>\n                )\n              : null}\n          </div>\n        );\n      };\n    },\n  });\n}\nconst InterPickerPanel = PickerPanel<any>();\nexport default <DateType,>(props: MergedPickerPanelProps<DateType>) =>\n  createVNode(InterPickerPanel, props);\n"],"names":["PickerPanel","name","inheritAttrs","props","prefixCls","String","locale","Object","generateConfig","value","defaultValue","pickerValue","defaultPickerValue","disabledDate","Function","mode","picker","type","default","tabindex","Number","showNow","Boolean","undefined","showTime","showToday","renderExtraFooter","dateRender","hideHeader","onSelect","onChange","onPanelChange","onMousedown","onPickerValueChange","onOk","components","direction","hourStep","minuteStep","secondStep","setup","attrs","needConfirmButton","computed","isHourStepValid","isMinuteStepValid","isSecondStepValid","process","env","NODE_ENV","watchEffect","warning","isValidate","panelContext","useInjectPanel","operationRef","onContextSelect","hideRanges","defaultOpenValue","inRange","panelPosition","rangedValue","hoverRangedValue","useInjectRange","panelRef","ref","mergedValue","setInnerValue","useMergedState","toRef","postState","val","viewDate","setInnerViewDate","date","now","getNow","setDateTime","Array","isArray","setViewDate","getInternalNextMode","nextMode","getNextMode","PickerModeMap","mergedMode","setInnerMode","watch","sourceMode","setSourceMode","onInternalPanelChange","newMode","viewValue","isEqual","triggerSelect","forceTriggerSelect","onInternalKeydown","e","onKeydown","KeyCode","LEFT","RIGHT","UP","DOWN","PAGE_UP","PAGE_DOWN","ENTER","includes","which","preventDefault","onInternalBlur","onBlur","onNow","lowerBoundTime","getLowerBoundTime","getHour","getMinute","getSecond","adjustedNow","setTime","classString","classNames","useProvidePanel","hidePrevBtn","hideNextBtn","onClose","panelNode","pickerProps","onViewDateChange","_createVNode","DecadePanel","YearPanel","MonthPanel","QuarterPanel","WeekPanel","TimePanel","DatetimePanel","DatePanel","extraFooter","rangesNode","getExtraFooter","getRanges","okDisabled","todayNode","todayCls","disabled","onClick","today","class","style","InterPickerPanel","createVNode"],"mappings":"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"}