xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 13 kB
Source Map (JSON)
{"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBAAA,eAAA,CAAA;AACEA,EAAAA,IAAAA,EAAAA,aAAAA;AACAC,EAAAA,KAAAA,EAAAA;AACEC,IAAAA,UAAAA,EAAAA,KAAAA;AACAC,IAAAA,WAAAA,EAAAA,MAAAA;AACAC,IAAAA,oBAAAA,EAAAA,OAAAA;AACAC,IAAAA,WAAAA,EAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,QAAAA,CAAAA;AACAC,IAAAA,IAAAA,EAAAA;AACEC,MAAAA,IAAAA,EAAAA,MAAAA;;;AAGFC,IAAAA,MAAAA,EAAAA,MAAAA;AACAC,IAAAA,gBAAAA,EAAAA;AACEF,MAAAA,IAAAA,EAAAA,MAAAA;;;AAGFG,IAAAA,KAAAA,EAAAA,KAAAA;AACAC,IAAAA,eAAAA,EAAAA,MAAAA;AACAC,IAAAA,OAAAA,EAAAA,MAAAA;AACAC,IAAAA,YAAAA,EAAAA,OAAAA;AACAC,IAAAA,gBAAAA,EAAAA,OAAAA;AACAC,IAAAA,iBAAAA,EAAAA,OAAAA;AACAC,IAAAA,cAAAA,EAAAA,MAAAA;AACAC,IAAAA,IAAAA,EAAAA,KAAAA;AACAC,IAAAA,KAAAA,EAAAA,KAAAA;AACAC,IAAAA,IAAAA,EAAAA,KAAAA;AACAC,IAAAA,OAAAA,EAAAA,QAAAA;AACAC,IAAAA,WAAAA,EAAAA,QAAAA;AACAC,IAAAA,gBAAAA,EAAAA,QAAAA;AACAC,IAAAA,gBAAAA,EAAAA,QAAAA;AACAC,IAAAA,aAAAA,EAAAA,QAAAA;AACAC,IAAAA,cAAAA,EAAAA,QAAAA;AACAC,IAAAA,aAAAA,EAAAA,QAAAA;AACAC,IAAAA,YAAAA,EAAAA,QAAAA;AACAC,IAAAA,aAAAA,EAAAA,QAAAA;AACAC,IAAAA,kBAAAA,EAAAA,QAAAA;;;AAGM,IAAA,IAAA,cAAA,GAAA,cAAA,CAAA,0BAAA,CAAA,CAAA;AACN,IAAA,IAAA,UAAA,GAAA,SAAA,CAAA,YAAA,CAAA;;;;;;AAMA,OAAA,CAAA;;AAGA,IAAA,IAAA,gBAAA,GAAA,CAAA,KAAA,CAAA,iBAAA,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,KAAA,CAAA,CAAA;;AAEoC,MAAA,OAAA,cAAA,CAAA;AAEhCrB,QAAAA,MAAAA,EAAAA,MAAAA;;;AAGAsB,QAAAA,KAAAA,EAAAA,KAAAA,CAAAA,oBAAAA,IAAAA,KAAAA,CAAAA,WAAAA,KAAAA,CAAAA,GAAAA,IAAAA,IAAAA,CAAAA,YAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,EAAAA,OAAAA,CAAAA,CAAAA,MAAAA,EAAAA,CAAAA,QAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,GAAAA,KAAAA,CAAAA;AAIAC,QAAAA,GAAAA,EAAAA,KAAAA,CAAAA,oBAAAA,IAAAA,KAAAA,CAAAA,WAAAA,KAAAA,CAAAA,GAAAA,IAAAA,IAAAA,CAAAA,YAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,CAAAA,MAAAA,EAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,CAAAA,CAAAA,GAAAA,KAAAA,CAAAA;AAIF,OAAA,CAAA,CAAA;AAAC,KAAA,CAAA,CAAA;;;AAKCC,QAAAA,OAAAA,EAAAA,IAAAA;;;AAGAC,QAAAA,UAAAA,EAAAA,CAAAA,gBAAAA,IAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,YAAAA,CAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,CAAAA,MAAAA,EAAAA,GAAAA,KAAAA,CAAAA;AAIAC,QAAAA,QAAAA,EAAAA,CAAAA,gBAAAA,IAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,YAAAA,CAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,CAAAA,MAAAA,EAAAA,GAAAA,KAAAA,CAAAA;AAIAjB,QAAAA,IAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACAC,QAAAA,KAAAA,EAAAA,KAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;;AAE2D,OAAA,EAAA,kBAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAE5D,KAAA,CAAA,CAAA;;;AAKCc,QAAAA,OAAAA,EAAAA,IAAAA;;;AAGAC,QAAAA,UAAAA,EAAAA,CAAAA,gBAAAA,IAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,YAAAA,CAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,CAAAA,MAAAA,EAAAA,GAAAA,KAAAA,CAAAA;AAIAC,QAAAA,QAAAA,EAAAA,CAAAA,gBAAAA,IAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,YAAAA,CAAAA,KAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,CAAAA,MAAAA,EAAAA,GAAAA,KAAAA,CAAAA;AAIAjB,QAAAA,IAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACAC,QAAAA,KAAAA,EAAAA,KAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;;AAE2D,OAAA,EAAA,kBAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAE5D,KAAA,CAAA,CAAA;;;AAIDV,QAAAA,MAAAA,EAAAA,MAAAA;;;;;;;;;;;;;;AAcA,KAAA,CAAA,CAAA;;AAEK,MAAA,OAAA2B,WAAA,CAAA,KAAA,EAAA;;;AAQO,UAAA,IAAA,cAAA,CAAA;AAAA,UAAA,OAAA,CAAA,cAAA,GAAA,KAAA,CAAA,OAAA,MAAA,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAA,IAAA,CAAA,KAAA,EAAA;AAAwBC,YAAAA,CAAAA,EAAAA,CAAAA;AAAE,WAAA,CAAA,CAAA;AAAC,SAAA;AAAA,OAAA,EAAA,CAAA,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA,QAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,GAAAD,WAAA,CAAA,aAAA,EAAA;;;;;;AAQX,QAAA,kBAAA,EAAA,KAAA,CAAA,gBAAA;;AAGtB,QAAA,OAAA,EAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,kBAAA,CAAA;;AAGA,QAAA,KAAA,EAAA,YAAA;AAGI,QAAA,SAAA,EAAA,OAAA;;AACiB,QAAA,OAAA,EAAA,KAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAEjB,QAAA,MAAA,EAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;AACa,QAAA,WAAA,EAAA,cAAA,CAAA,KAAA;;AAGf,QAAA,KAAA,EAAA,UAAA;AAGE,QAAA,SAAA,EAAA,KAAA;;AACiB,QAAA,OAAA,EAAA,KAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAEjB,QAAA,MAAA,EAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;AACa,QAAA,WAAA,EAAA,YAAA,CAAA,KAAA;;AAIjB,QAAA,KAAA,EAAA,OAAA;;AAKE,QAAA,MAAA,EAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;AACwD,QAAA,MAAA,EAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;;;;;;;;AAcpC,QAAA,kBAAA,EAAA,KAAA,CAAA,gBAAA;;;AAMhC,GAAA;AACF,CAAA,CAAA;;;;"}