{"version":3,"file":"RangePanel.mjs","sources":["../../../src/date-picker/panel/RangePanel.tsx"],"sourcesContent":["import { defineComponent, PropType, computed } from 'vue';\nimport { useConfig, usePrefixClass } from '../../hooks/useConfig';\nimport TPanelContent from './PanelContent';\nimport TExtraContent from './ExtraContent';\nimport { TdDateRangePickerProps } from '../type';\nimport { getDefaultFormat, parseToDayjs } from '../../_common/js/date-picker/format';\nimport useTableData from '../hooks/useTableData';\nimport useDisableDate from '../hooks/useDisableDate';\n\nexport default defineComponent({\n  name: 'XRangePanel',\n  props: {\n    hoverValue: Array as PropType<Array<string>>,\n    activeIndex: Number,\n    isFirstValueSelected: Boolean,\n    disableDate: [Object, Array, Function] as PropType<TdDateRangePickerProps['disableDate']>,\n    mode: {\n      type: String as PropType<TdDateRangePickerProps['mode']>,\n      default: 'date',\n    },\n    format: String as PropType<TdDateRangePickerProps['format']>,\n    presetsPlacement: {\n      type: String as PropType<TdDateRangePickerProps['presetsPlacement']>,\n      default: 'bottom',\n    },\n    value: Array as PropType<Array<string>>,\n    timePickerProps: Object as PropType<TdDateRangePickerProps['timePickerProps']>,\n    presets: Object as PropType<TdDateRangePickerProps['presets']>,\n    popupVisible: Boolean,\n    enableTimePicker: Boolean,\n    panelPreselection: Boolean,\n    firstDayOfWeek: Number,\n    year: Array as PropType<Array<number>>,\n    month: Array as PropType<Array<number>>,\n    time: Array as PropType<Array<string>>,\n    onClick: Function,\n    onCellClick: Function,\n    onCellMouseEnter: Function,\n    onCellMouseLeave: Function,\n    onJumperClick: Function,\n    onConfirmClick: Function,\n    onPresetClick: Function,\n    onYearChange: Function,\n    onMonthChange: Function,\n    onTimePickerChange: Function,\n  },\n  setup(props) {\n    const COMPONENT_NAME = usePrefixClass('date-range-picker__panel');\n    const { globalConfig } = useConfig('datePicker');\n\n    const { format } = getDefaultFormat({\n      mode: props.mode,\n      format: props.format,\n      enableTimePicker: props.enableTimePicker,\n    });\n\n    // 是否隐藏预选状态,只有 value 有值的时候需要隐藏\n    const hidePreselection = !props.panelPreselection && props.value.length === 2;\n\n    const disableDateOptions = computed(() =>\n      useDisableDate({\n        format,\n        mode: props.mode,\n        disableDate: props.disableDate,\n        start:\n          props.isFirstValueSelected && props.activeIndex === 1\n            ? new Date(parseToDayjs(props.value[0], format, 'start').toDate().setHours(0, 0, 0))\n            : undefined,\n        end:\n          props.isFirstValueSelected && props.activeIndex === 0\n            ? new Date(parseToDayjs(props.value[1], format).toDate().setHours(23, 59, 59))\n            : undefined,\n      }),\n    );\n\n    const startTableData = computed(() =>\n      useTableData({\n        isRange: true,\n        start: props.value[0] ? parseToDayjs(props.value[0] as string, format).toDate() : undefined,\n        end: props.value[1] ? parseToDayjs(props.value[1] as string, format).toDate() : undefined,\n        hoverStart:\n          !hidePreselection && props.hoverValue[0]\n            ? parseToDayjs(props.hoverValue[0] as string, format).toDate()\n            : undefined,\n        hoverEnd:\n          !hidePreselection && props.hoverValue[1]\n            ? parseToDayjs(props.hoverValue[1] as string, format).toDate()\n            : undefined,\n        year: props.year[0],\n        month: props.month[0],\n        mode: props.mode,\n        firstDayOfWeek: props.firstDayOfWeek || globalConfig.value.firstDayOfWeek,\n        ...disableDateOptions.value,\n      }),\n    );\n\n    const endTableData = computed(() =>\n      useTableData({\n        isRange: true,\n        start: props.value[0] ? parseToDayjs(props.value[0] as string, format).toDate() : undefined,\n        end: props.value[1] ? parseToDayjs(props.value[1] as string, format).toDate() : undefined,\n        hoverStart:\n          !hidePreselection && props.hoverValue[0]\n            ? parseToDayjs(props.hoverValue[0] as string, format).toDate()\n            : undefined,\n        hoverEnd:\n          !hidePreselection && props.hoverValue[1]\n            ? parseToDayjs(props.hoverValue[1] as string, format).toDate()\n            : undefined,\n        year: props.year[1],\n        month: props.month[1],\n        mode: props.mode,\n        firstDayOfWeek: props.firstDayOfWeek || globalConfig.value.firstDayOfWeek,\n        ...disableDateOptions.value,\n      }),\n    );\n\n    const panelContentProps = computed(() => ({\n      format,\n      mode: props.mode,\n      firstDayOfWeek: props.firstDayOfWeek || globalConfig.value.firstDayOfWeek,\n\n      popupVisible: props.popupVisible,\n      enableTimePicker: props.enableTimePicker,\n      timePickerProps: props.timePickerProps,\n      onMonthChange: props.onMonthChange,\n      onYearChange: props.onYearChange,\n      onJumperClick: props.onJumperClick,\n      onCellClick: props.onCellClick,\n      onCellMouseEnter: props.onCellMouseEnter,\n      onCellMouseLeave: props.onCellMouseLeave,\n      onTimePickerChange: props.onTimePickerChange,\n    }));\n\n    return () => (\n      <div\n        class={[\n          COMPONENT_NAME.value,\n          {\n            [`${COMPONENT_NAME.value}--direction-row`]: ['left', 'right'].includes(props.presetsPlacement),\n          },\n        ]}\n        onClick={(e) => props.onClick?.({ e })}\n      >\n        {['top', 'left'].includes(props.presetsPlacement) ? (\n          <TExtraContent\n            presets={props.presets}\n            selectedValue={props.value[props.activeIndex]}\n            enableTimePicker={props.enableTimePicker}\n            onPresetClick={props.onPresetClick}\n            onConfirmClick={props.onConfirmClick}\n            presetsPlacement={props.presetsPlacement}\n          />\n        ) : null}\n        <div class={`${COMPONENT_NAME.value}-content-wrapper`}>\n          {!props.enableTimePicker ? (\n            [\n              <TPanelContent\n                key=\"startPanel\"\n                partial=\"start\"\n                year={props.year[0]}\n                month={props.month[0]}\n                time={props.time[0]}\n                value={props.value}\n                tableData={startTableData.value}\n                {...panelContentProps.value}\n              />,\n              <TPanelContent\n                key=\"endPanel\"\n                partial=\"end\"\n                year={props.year[1]}\n                month={props.month[1]}\n                time={props.time[1]}\n                value={props.value}\n                tableData={endTableData.value}\n                {...panelContentProps.value}\n              />,\n            ]\n          ) : (\n            <TPanelContent\n              key=\"start\"\n              partial={props.activeIndex ? 'end' : 'start'}\n              year={props.activeIndex ? props.year[1] : props.year[0]}\n              month={props.activeIndex ? props.month[1] : props.month[0]}\n              time={props.activeIndex ? props.time[1] : props.time[0]}\n              value={props.value}\n              tableData={props.activeIndex ? endTableData.value : startTableData.value}\n              {...panelContentProps.value}\n            />\n          )}\n        </div>\n        {['bottom', 'right'].includes(props.presetsPlacement) ? (\n          <TExtraContent\n            presets={props.presets}\n            selectedValue={props.value[props.activeIndex]}\n            enableTimePicker={props.enableTimePicker}\n            onPresetClick={props.onPresetClick}\n            onConfirmClick={props.onConfirmClick}\n            presetsPlacement={props.presetsPlacement}\n          />\n        ) : null}\n      </div>\n    );\n  },\n});\n"],"names":["name","props","hoverValue","activeIndex","isFirstValueSelected","disableDate","mode","type","format","presetsPlacement","value","timePickerProps","presets","popupVisible","enableTimePicker","panelPreselection","firstDayOfWeek","year","month","time","onClick","onCellClick","onCellMouseEnter","onCellMouseLeave","onJumperClick","onConfirmClick","onPresetClick","onYearChange","onMonthChange","onTimePickerChange","start","end","isRange","hoverStart","hoverEnd","_createVNode","e"],"mappings":"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"}