RangePicker.js 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. var _typeof3 = require("@babel/runtime/helpers/typeof");
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _vue = require("vue");
  9. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  10. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  11. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  12. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  13. var _PickerTrigger = _interopRequireDefault(require("./PickerTrigger"));
  14. var _PickerPanel = _interopRequireDefault(require("./PickerPanel"));
  15. var _usePickerInput5 = _interopRequireDefault(require("./hooks/usePickerInput"));
  16. var _miscUtil = _interopRequireWildcard(require("./utils/miscUtil"));
  17. var _uiUtil = require("./utils/uiUtil");
  18. var _PanelContext = require("./PanelContext");
  19. var _dateUtil = require("./utils/dateUtil");
  20. var _useValueTexts5 = _interopRequireDefault(require("./hooks/useValueTexts"));
  21. var _useTextValueMapping5 = _interopRequireDefault(require("./hooks/useTextValueMapping"));
  22. var _RangeContext = require("./RangeContext");
  23. var _useRangeDisabled3 = _interopRequireDefault(require("./hooks/useRangeDisabled"));
  24. var _getExtraFooter = _interopRequireDefault(require("./utils/getExtraFooter"));
  25. var _getRanges = _interopRequireDefault(require("./utils/getRanges"));
  26. var _useRangeViewDates3 = _interopRequireDefault(require("./hooks/useRangeViewDates"));
  27. var _useHoverValue5 = _interopRequireDefault(require("./hooks/useHoverValue"));
  28. var _useMergedState11 = _interopRequireDefault(require("../_util/hooks/useMergedState"));
  29. var _warning = require("../vc-util/warning");
  30. var _useState5 = _interopRequireDefault(require("../_util/hooks/useState"));
  31. var _classNames5 = _interopRequireDefault(require("../_util/classNames"));
  32. var _context = require("../vc-trigger/context");
  33. var _warnUtil = require("./utils/warnUtil");
  34. var _useElementSize6 = require("../_util/hooks/_vueuse/useElementSize");
  35. function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
  36. function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
  37. function reorderValues(values, generateConfig) {
  38. if (values && values[0] && values[1] && generateConfig.isAfter(values[0], values[1])) {
  39. return [values[1], values[0]];
  40. }
  41. return values;
  42. }
  43. function canValueTrigger(value, index, disabled, allowEmpty) {
  44. if (value) {
  45. return true;
  46. }
  47. if (allowEmpty && allowEmpty[index]) {
  48. return true;
  49. }
  50. if (disabled[(index + 1) % 2]) {
  51. return true;
  52. }
  53. return false;
  54. }
  55. function RangerPicker() {
  56. return (0, _vue.defineComponent)({
  57. name: 'RangerPicker',
  58. inheritAttrs: false,
  59. props: ['prefixCls', 'id', 'popupStyle', 'dropdownClassName', 'transitionName', 'dropdownAlign', 'getPopupContainer', 'generateConfig', 'locale', 'placeholder', 'autofocus', 'disabled', 'format', 'picker', 'showTime', 'showNow', 'showHour', 'showMinute', 'showSecond', 'use12Hours', 'separator', 'value', 'defaultValue', 'defaultPickerValue', 'open', 'defaultOpen', 'disabledDate', 'disabledTime', 'dateRender', 'panelRender', 'ranges', 'allowEmpty', 'allowClear', 'suffixIcon', 'clearIcon', 'pickerRef', 'inputReadOnly', 'mode', 'renderExtraFooter', 'onChange', 'onOpenChange', 'onPanelChange', 'onCalendarChange', 'onFocus', 'onBlur', 'onMousedown', 'onMouseup', 'onMouseenter', 'onMouseleave', 'onClick', 'onOk', 'onKeydown', 'components', 'order', 'direction', 'activePickerIndex', 'autocomplete', 'minuteStep', 'hourStep', 'secondStep', 'hideDisabledOptions', 'disabledMinutes'],
  60. setup: function setup(props, _ref) {
  61. var attrs = _ref.attrs,
  62. expose = _ref.expose;
  63. var needConfirmButton = (0, _vue.computed)(function () {
  64. return props.picker === 'date' && !!props.showTime || props.picker === 'time';
  65. });
  66. var getPortal = (0, _context.useProviderTrigger)();
  67. // We record opened status here in case repeat open with picker
  68. var openRecordsRef = (0, _vue.ref)({});
  69. var containerRef = (0, _vue.ref)(null);
  70. var panelDivRef = (0, _vue.ref)(null);
  71. var startInputDivRef = (0, _vue.ref)(null);
  72. var endInputDivRef = (0, _vue.ref)(null);
  73. var separatorRef = (0, _vue.ref)(null);
  74. var startInputRef = (0, _vue.ref)(null);
  75. var endInputRef = (0, _vue.ref)(null);
  76. var arrowRef = (0, _vue.ref)(null);
  77. // ============================ Warning ============================
  78. if (process.env.NODE_ENV !== 'production') {
  79. (0, _warnUtil.legacyPropsWarning)(props);
  80. }
  81. // ============================= Misc ==============================
  82. var formatList = (0, _vue.computed)(function () {
  83. return (0, _miscUtil.toArray)((0, _uiUtil.getDefaultFormat)(props.format, props.picker, props.showTime, props.use12Hours));
  84. });
  85. // Active picker
  86. var _useMergedState = (0, _useMergedState11.default)(0, {
  87. value: (0, _vue.toRef)(props, 'activePickerIndex')
  88. }),
  89. _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
  90. mergedActivePickerIndex = _useMergedState2[0],
  91. setMergedActivePickerIndex = _useMergedState2[1];
  92. // Operation ref
  93. var operationRef = (0, _vue.ref)(null);
  94. var mergedDisabled = (0, _vue.computed)(function () {
  95. var disabled = props.disabled;
  96. if (Array.isArray(disabled)) {
  97. return disabled;
  98. }
  99. return [disabled || false, disabled || false];
  100. });
  101. // ============================= Value =============================
  102. var _useMergedState3 = (0, _useMergedState11.default)(null, {
  103. value: (0, _vue.toRef)(props, 'value'),
  104. defaultValue: props.defaultValue,
  105. postState: function postState(values) {
  106. return props.picker === 'time' && !props.order ? values : reorderValues(values, props.generateConfig);
  107. }
  108. }),
  109. _useMergedState4 = (0, _slicedToArray2.default)(_useMergedState3, 2),
  110. mergedValue = _useMergedState4[0],
  111. setInnerValue = _useMergedState4[1];
  112. // =========================== View Date ===========================
  113. // Config view panel
  114. var _useRangeViewDates = (0, _useRangeViewDates3.default)({
  115. values: mergedValue,
  116. picker: (0, _vue.toRef)(props, 'picker'),
  117. defaultDates: props.defaultPickerValue,
  118. generateConfig: (0, _vue.toRef)(props, 'generateConfig')
  119. }),
  120. _useRangeViewDates2 = (0, _slicedToArray2.default)(_useRangeViewDates, 3),
  121. startViewDate = _useRangeViewDates2[0],
  122. endViewDate = _useRangeViewDates2[1],
  123. setViewDate = _useRangeViewDates2[2];
  124. // ========================= Select Values =========================
  125. var _useMergedState5 = (0, _useMergedState11.default)(mergedValue.value, {
  126. postState: function postState(values) {
  127. var postValues = values;
  128. if (mergedDisabled.value[0] && mergedDisabled.value[1]) {
  129. return postValues;
  130. }
  131. // Fill disabled unit
  132. for (var i = 0; i < 2; i += 1) {
  133. if (mergedDisabled.value[i] && !(0, _miscUtil.getValue)(postValues, i) && !(0, _miscUtil.getValue)(props.allowEmpty, i)) {
  134. postValues = (0, _miscUtil.updateValues)(postValues, props.generateConfig.getNow(), i);
  135. }
  136. }
  137. return postValues;
  138. }
  139. }),
  140. _useMergedState6 = (0, _slicedToArray2.default)(_useMergedState5, 2),
  141. selectedValue = _useMergedState6[0],
  142. setSelectedValue = _useMergedState6[1];
  143. // ============================= Modes =============================
  144. var _useMergedState7 = (0, _useMergedState11.default)([props.picker, props.picker], {
  145. value: (0, _vue.toRef)(props, 'mode')
  146. }),
  147. _useMergedState8 = (0, _slicedToArray2.default)(_useMergedState7, 2),
  148. mergedModes = _useMergedState8[0],
  149. setInnerModes = _useMergedState8[1];
  150. (0, _vue.watch)(function () {
  151. return props.picker;
  152. }, function () {
  153. setInnerModes([props.picker, props.picker]);
  154. });
  155. var triggerModesChange = function triggerModesChange(modes, values) {
  156. var _props$onPanelChange;
  157. setInnerModes(modes);
  158. (_props$onPanelChange = props.onPanelChange) === null || _props$onPanelChange === void 0 ? void 0 : _props$onPanelChange.call(props, values, modes);
  159. };
  160. // ========================= Disable Date ==========================
  161. var _useRangeDisabled = (0, _useRangeDisabled3.default)({
  162. picker: (0, _vue.toRef)(props, 'picker'),
  163. selectedValue: selectedValue,
  164. locale: (0, _vue.toRef)(props, 'locale'),
  165. disabled: mergedDisabled,
  166. disabledDate: (0, _vue.toRef)(props, 'disabledDate'),
  167. generateConfig: (0, _vue.toRef)(props, 'generateConfig')
  168. }, openRecordsRef),
  169. _useRangeDisabled2 = (0, _slicedToArray2.default)(_useRangeDisabled, 2),
  170. disabledStartDate = _useRangeDisabled2[0],
  171. disabledEndDate = _useRangeDisabled2[1];
  172. // ============================= Open ==============================
  173. var _useMergedState9 = (0, _useMergedState11.default)(false, {
  174. value: (0, _vue.toRef)(props, 'open'),
  175. defaultValue: props.defaultOpen,
  176. postState: function postState(postOpen) {
  177. return mergedDisabled.value[mergedActivePickerIndex.value] ? false : postOpen;
  178. },
  179. onChange: function onChange(newOpen) {
  180. var _props$onOpenChange;
  181. (_props$onOpenChange = props.onOpenChange) === null || _props$onOpenChange === void 0 ? void 0 : _props$onOpenChange.call(props, newOpen);
  182. if (!newOpen && operationRef.value && operationRef.value.onClose) {
  183. operationRef.value.onClose();
  184. }
  185. }
  186. }),
  187. _useMergedState10 = (0, _slicedToArray2.default)(_useMergedState9, 2),
  188. mergedOpen = _useMergedState10[0],
  189. triggerInnerOpen = _useMergedState10[1];
  190. var startOpen = (0, _vue.computed)(function () {
  191. return mergedOpen.value && mergedActivePickerIndex.value === 0;
  192. });
  193. var endOpen = (0, _vue.computed)(function () {
  194. return mergedOpen.value && mergedActivePickerIndex.value === 1;
  195. });
  196. var panelLeft = (0, _vue.ref)(0);
  197. var arrowLeft = (0, _vue.ref)(0);
  198. // ============================= Popup =============================
  199. // Popup min width
  200. var popupMinWidth = (0, _vue.ref)(0);
  201. var _useElementSize = (0, _useElementSize6.useElementSize)(containerRef),
  202. containerWidth = _useElementSize.width;
  203. (0, _vue.watch)([mergedOpen, containerWidth], function () {
  204. if (!mergedOpen.value && containerRef.value) {
  205. popupMinWidth.value = containerWidth.value;
  206. }
  207. });
  208. var _useElementSize2 = (0, _useElementSize6.useElementSize)(panelDivRef),
  209. panelDivWidth = _useElementSize2.width;
  210. var _useElementSize3 = (0, _useElementSize6.useElementSize)(arrowRef),
  211. arrowWidth = _useElementSize3.width;
  212. var _useElementSize4 = (0, _useElementSize6.useElementSize)(startInputDivRef),
  213. startInputDivWidth = _useElementSize4.width;
  214. var _useElementSize5 = (0, _useElementSize6.useElementSize)(separatorRef),
  215. separatorWidth = _useElementSize5.width;
  216. (0, _vue.watch)([mergedActivePickerIndex, mergedOpen, panelDivWidth, arrowWidth, startInputDivWidth, separatorWidth, function () {
  217. return props.direction;
  218. }], function () {
  219. arrowLeft.value = 0;
  220. if (mergedOpen.value && mergedActivePickerIndex.value) {
  221. if (startInputDivRef.value && separatorRef.value && panelDivRef.value) {
  222. arrowLeft.value = startInputDivWidth.value + separatorWidth.value;
  223. if (panelDivWidth.value && arrowWidth.value && arrowLeft.value > panelDivWidth.value - arrowWidth.value - (props.direction === 'rtl' || arrowRef.value.offsetLeft > arrowLeft.value ? 0 : arrowRef.value.offsetLeft)) {
  224. panelLeft.value = arrowLeft.value;
  225. }
  226. }
  227. } else if (mergedActivePickerIndex.value === 0) {
  228. panelLeft.value = 0;
  229. }
  230. }, {
  231. immediate: true
  232. });
  233. // ============================ Trigger ============================
  234. var triggerRef = (0, _vue.ref)();
  235. function _triggerOpen(newOpen, index) {
  236. if (newOpen) {
  237. clearTimeout(triggerRef.value);
  238. openRecordsRef.value[index] = true;
  239. setMergedActivePickerIndex(index);
  240. triggerInnerOpen(newOpen);
  241. // Open to reset view date
  242. if (!mergedOpen.value) {
  243. setViewDate(null, index);
  244. }
  245. } else if (mergedActivePickerIndex.value === index) {
  246. triggerInnerOpen(newOpen);
  247. // Clean up async
  248. // This makes ref not quick refresh in case user open another input with blur trigger
  249. var openRecords = openRecordsRef.value;
  250. triggerRef.value = setTimeout(function () {
  251. if (openRecords === openRecordsRef.value) {
  252. openRecordsRef.value = {};
  253. }
  254. });
  255. }
  256. }
  257. function triggerOpenAndFocus(index) {
  258. _triggerOpen(true, index);
  259. // Use setTimeout to make sure panel DOM exists
  260. setTimeout(function () {
  261. var inputRef = [startInputRef, endInputRef][index];
  262. if (inputRef.value) {
  263. inputRef.value.focus();
  264. }
  265. }, 0);
  266. }
  267. function triggerChange(newValue, sourceIndex) {
  268. var values = newValue;
  269. var startValue = (0, _miscUtil.getValue)(values, 0);
  270. var endValue = (0, _miscUtil.getValue)(values, 1);
  271. var generateConfig = props.generateConfig,
  272. locale = props.locale,
  273. picker = props.picker,
  274. order = props.order,
  275. onCalendarChange = props.onCalendarChange,
  276. allowEmpty = props.allowEmpty,
  277. onChange = props.onChange,
  278. showTime = props.showTime;
  279. // >>>>> Format start & end values
  280. if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {
  281. if (
  282. // WeekPicker only compare week
  283. picker === 'week' && !(0, _dateUtil.isSameWeek)(generateConfig, locale.locale, startValue, endValue) ||
  284. // QuotaPicker only compare week
  285. picker === 'quarter' && !(0, _dateUtil.isSameQuarter)(generateConfig, startValue, endValue) ||
  286. // Other non-TimePicker compare date
  287. picker !== 'week' && picker !== 'quarter' && picker !== 'time' && !(showTime ? (0, _dateUtil.isEqual)(generateConfig, startValue, endValue) : (0, _dateUtil.isSameDate)(generateConfig, startValue, endValue))) {
  288. // Clean up end date when start date is after end date
  289. if (sourceIndex === 0) {
  290. values = [startValue, null];
  291. endValue = null;
  292. } else {
  293. startValue = null;
  294. values = [null, endValue];
  295. }
  296. // Clean up cache since invalidate
  297. openRecordsRef.value = (0, _defineProperty2.default)({}, sourceIndex, true);
  298. } else if (picker !== 'time' || order !== false) {
  299. // Reorder when in same date
  300. values = reorderValues(values, generateConfig);
  301. }
  302. }
  303. setSelectedValue(values);
  304. var startStr = values && values[0] ? (0, _dateUtil.formatValue)(values[0], {
  305. generateConfig: generateConfig,
  306. locale: locale,
  307. format: formatList.value[0]
  308. }) : '';
  309. var endStr = values && values[1] ? (0, _dateUtil.formatValue)(values[1], {
  310. generateConfig: generateConfig,
  311. locale: locale,
  312. format: formatList.value[0]
  313. }) : '';
  314. if (onCalendarChange) {
  315. var info = {
  316. range: sourceIndex === 0 ? 'start' : 'end'
  317. };
  318. onCalendarChange(values, [startStr, endStr], info);
  319. }
  320. // >>>>> Trigger `onChange` event
  321. var canStartValueTrigger = canValueTrigger(startValue, 0, mergedDisabled.value, allowEmpty);
  322. var canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled.value, allowEmpty);
  323. var canTrigger = values === null || canStartValueTrigger && canEndValueTrigger;
  324. if (canTrigger) {
  325. // Trigger onChange only when value is validate
  326. setInnerValue(values);
  327. if (onChange && (!(0, _dateUtil.isEqual)(generateConfig, (0, _miscUtil.getValue)(mergedValue.value, 0), startValue) || !(0, _dateUtil.isEqual)(generateConfig, (0, _miscUtil.getValue)(mergedValue.value, 1), endValue))) {
  328. onChange(values, [startStr, endStr]);
  329. }
  330. }
  331. // >>>>> Open picker when
  332. // Always open another picker if possible
  333. var nextOpenIndex = null;
  334. if (sourceIndex === 0 && !mergedDisabled.value[1]) {
  335. nextOpenIndex = 1;
  336. } else if (sourceIndex === 1 && !mergedDisabled.value[0]) {
  337. nextOpenIndex = 0;
  338. }
  339. if (nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex.value && (!openRecordsRef.value[nextOpenIndex] || !(0, _miscUtil.getValue)(values, nextOpenIndex)) && (0, _miscUtil.getValue)(values, sourceIndex)) {
  340. // Delay to focus to avoid input blur trigger expired selectedValues
  341. triggerOpenAndFocus(nextOpenIndex);
  342. } else {
  343. _triggerOpen(false, sourceIndex);
  344. }
  345. }
  346. var forwardKeydown = function forwardKeydown(e) {
  347. if (mergedOpen && operationRef.value && operationRef.value.onKeydown) {
  348. // Let popup panel handle keyboard
  349. return operationRef.value.onKeydown(e);
  350. }
  351. /* istanbul ignore next */
  352. /* eslint-disable no-lone-blocks */
  353. {
  354. (0, _warning.warning)(false, 'Picker not correct forward Keydown operation. Please help to fire issue about this.');
  355. return false;
  356. }
  357. };
  358. // ============================= Text ==============================
  359. var sharedTextHooksProps = {
  360. formatList: formatList,
  361. generateConfig: (0, _vue.toRef)(props, 'generateConfig'),
  362. locale: (0, _vue.toRef)(props, 'locale')
  363. };
  364. var _useValueTexts = (0, _useValueTexts5.default)((0, _vue.computed)(function () {
  365. return (0, _miscUtil.getValue)(selectedValue.value, 0);
  366. }), sharedTextHooksProps),
  367. _useValueTexts2 = (0, _slicedToArray2.default)(_useValueTexts, 2),
  368. startValueTexts = _useValueTexts2[0],
  369. firstStartValueText = _useValueTexts2[1];
  370. var _useValueTexts3 = (0, _useValueTexts5.default)((0, _vue.computed)(function () {
  371. return (0, _miscUtil.getValue)(selectedValue.value, 1);
  372. }), sharedTextHooksProps),
  373. _useValueTexts4 = (0, _slicedToArray2.default)(_useValueTexts3, 2),
  374. endValueTexts = _useValueTexts4[0],
  375. firstEndValueText = _useValueTexts4[1];
  376. var _onTextChange = function onTextChange(newText, index) {
  377. var inputDate = (0, _dateUtil.parseValue)(newText, {
  378. locale: props.locale,
  379. formatList: formatList.value,
  380. generateConfig: props.generateConfig
  381. });
  382. var disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;
  383. if (inputDate && !disabledFunc(inputDate)) {
  384. setSelectedValue((0, _miscUtil.updateValues)(selectedValue.value, inputDate, index));
  385. setViewDate(inputDate, index);
  386. }
  387. };
  388. var _useTextValueMapping = (0, _useTextValueMapping5.default)({
  389. valueTexts: startValueTexts,
  390. onTextChange: function onTextChange(newText) {
  391. return _onTextChange(newText, 0);
  392. }
  393. }),
  394. _useTextValueMapping2 = (0, _slicedToArray2.default)(_useTextValueMapping, 3),
  395. startText = _useTextValueMapping2[0],
  396. triggerStartTextChange = _useTextValueMapping2[1],
  397. resetStartText = _useTextValueMapping2[2];
  398. var _useTextValueMapping3 = (0, _useTextValueMapping5.default)({
  399. valueTexts: endValueTexts,
  400. onTextChange: function onTextChange(newText) {
  401. return _onTextChange(newText, 1);
  402. }
  403. }),
  404. _useTextValueMapping4 = (0, _slicedToArray2.default)(_useTextValueMapping3, 3),
  405. endText = _useTextValueMapping4[0],
  406. triggerEndTextChange = _useTextValueMapping4[1],
  407. resetEndText = _useTextValueMapping4[2];
  408. var _useState = (0, _useState5.default)(null),
  409. _useState2 = (0, _slicedToArray2.default)(_useState, 2),
  410. rangeHoverValue = _useState2[0],
  411. setRangeHoverValue = _useState2[1];
  412. // ========================== Hover Range ==========================
  413. var _useState3 = (0, _useState5.default)(null),
  414. _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
  415. hoverRangedValue = _useState4[0],
  416. setHoverRangedValue = _useState4[1];
  417. var _useHoverValue = (0, _useHoverValue5.default)(startText, sharedTextHooksProps),
  418. _useHoverValue2 = (0, _slicedToArray2.default)(_useHoverValue, 3),
  419. startHoverValue = _useHoverValue2[0],
  420. onStartEnter = _useHoverValue2[1],
  421. onStartLeave = _useHoverValue2[2];
  422. var _useHoverValue3 = (0, _useHoverValue5.default)(endText, sharedTextHooksProps),
  423. _useHoverValue4 = (0, _slicedToArray2.default)(_useHoverValue3, 3),
  424. endHoverValue = _useHoverValue4[0],
  425. onEndEnter = _useHoverValue4[1],
  426. onEndLeave = _useHoverValue4[2];
  427. var onDateMouseenter = function onDateMouseenter(date) {
  428. setHoverRangedValue((0, _miscUtil.updateValues)(selectedValue.value, date, mergedActivePickerIndex.value));
  429. if (mergedActivePickerIndex.value === 0) {
  430. onStartEnter(date);
  431. } else {
  432. onEndEnter(date);
  433. }
  434. };
  435. var onDateMouseleave = function onDateMouseleave() {
  436. setHoverRangedValue((0, _miscUtil.updateValues)(selectedValue.value, null, mergedActivePickerIndex.value));
  437. if (mergedActivePickerIndex.value === 0) {
  438. onStartLeave();
  439. } else {
  440. onEndLeave();
  441. }
  442. };
  443. // ============================= Input =============================
  444. var getSharedInputHookProps = function getSharedInputHookProps(index, resetText) {
  445. return {
  446. forwardKeydown: forwardKeydown,
  447. onBlur: function onBlur(e) {
  448. var _props$onBlur;
  449. (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 ? void 0 : _props$onBlur.call(props, e);
  450. },
  451. isClickOutside: function isClickOutside(target) {
  452. return !(0, _uiUtil.elementsContains)([panelDivRef.value, startInputDivRef.value, endInputDivRef.value, containerRef.value], target);
  453. },
  454. onFocus: function onFocus(e) {
  455. var _props$onFocus;
  456. setMergedActivePickerIndex(index);
  457. (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 ? void 0 : _props$onFocus.call(props, e);
  458. },
  459. triggerOpen: function triggerOpen(newOpen) {
  460. _triggerOpen(newOpen, index);
  461. },
  462. onSubmit: function onSubmit() {
  463. if (
  464. // When user typing disabledDate with keyboard and enter, this value will be empty
  465. !selectedValue.value ||
  466. // Normal disabled check
  467. props.disabledDate && props.disabledDate(selectedValue.value[index])) {
  468. return false;
  469. }
  470. triggerChange(selectedValue.value, index);
  471. resetText();
  472. },
  473. onCancel: function onCancel() {
  474. _triggerOpen(false, index);
  475. setSelectedValue(mergedValue.value);
  476. resetText();
  477. }
  478. };
  479. };
  480. var _usePickerInput = (0, _usePickerInput5.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, getSharedInputHookProps(0, resetStartText)), {}, {
  481. blurToCancel: needConfirmButton,
  482. open: startOpen,
  483. value: startText,
  484. onKeydown: function onKeydown(e, preventDefault) {
  485. var _props$onKeydown;
  486. (_props$onKeydown = props.onKeydown) === null || _props$onKeydown === void 0 ? void 0 : _props$onKeydown.call(props, e, preventDefault);
  487. }
  488. })),
  489. _usePickerInput2 = (0, _slicedToArray2.default)(_usePickerInput, 2),
  490. startInputProps = _usePickerInput2[0],
  491. _usePickerInput2$ = _usePickerInput2[1],
  492. startFocused = _usePickerInput2$.focused,
  493. startTyping = _usePickerInput2$.typing;
  494. var _usePickerInput3 = (0, _usePickerInput5.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, getSharedInputHookProps(1, resetEndText)), {}, {
  495. blurToCancel: needConfirmButton,
  496. open: endOpen,
  497. value: endText,
  498. onKeydown: function onKeydown(e, preventDefault) {
  499. var _props$onKeydown2;
  500. (_props$onKeydown2 = props.onKeydown) === null || _props$onKeydown2 === void 0 ? void 0 : _props$onKeydown2.call(props, e, preventDefault);
  501. }
  502. })),
  503. _usePickerInput4 = (0, _slicedToArray2.default)(_usePickerInput3, 2),
  504. endInputProps = _usePickerInput4[0],
  505. _usePickerInput4$ = _usePickerInput4[1],
  506. endFocused = _usePickerInput4$.focused,
  507. endTyping = _usePickerInput4$.typing;
  508. // ========================== Click Picker ==========================
  509. var onPickerClick = function onPickerClick(e) {
  510. var _props$onClick;
  511. // When click inside the picker & outside the picker's input elements
  512. // the panel should still be opened
  513. (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, e);
  514. if (!mergedOpen.value && !startInputRef.value.contains(e.target) && !endInputRef.value.contains(e.target)) {
  515. if (!mergedDisabled.value[0]) {
  516. triggerOpenAndFocus(0);
  517. } else if (!mergedDisabled.value[1]) {
  518. triggerOpenAndFocus(1);
  519. }
  520. }
  521. };
  522. var onPickerMousedown = function onPickerMousedown(e) {
  523. var _props$onMousedown;
  524. // shouldn't affect input elements if picker is active
  525. (_props$onMousedown = props.onMousedown) === null || _props$onMousedown === void 0 ? void 0 : _props$onMousedown.call(props, e);
  526. if (mergedOpen.value && (startFocused.value || endFocused.value) && !startInputRef.value.contains(e.target) && !endInputRef.value.contains(e.target)) {
  527. e.preventDefault();
  528. }
  529. };
  530. // ============================= Sync ==============================
  531. // Close should sync back with text value
  532. var startStr = (0, _vue.computed)(function () {
  533. var _mergedValue$value;
  534. return (_mergedValue$value = mergedValue.value) !== null && _mergedValue$value !== void 0 && _mergedValue$value[0] ? (0, _dateUtil.formatValue)(mergedValue.value[0], {
  535. locale: props.locale,
  536. format: 'YYYYMMDDHHmmss',
  537. generateConfig: props.generateConfig
  538. }) : '';
  539. });
  540. var endStr = (0, _vue.computed)(function () {
  541. var _mergedValue$value2;
  542. return (_mergedValue$value2 = mergedValue.value) !== null && _mergedValue$value2 !== void 0 && _mergedValue$value2[1] ? (0, _dateUtil.formatValue)(mergedValue.value[1], {
  543. locale: props.locale,
  544. format: 'YYYYMMDDHHmmss',
  545. generateConfig: props.generateConfig
  546. }) : '';
  547. });
  548. (0, _vue.watch)([mergedOpen, startValueTexts, endValueTexts], function () {
  549. if (!mergedOpen.value) {
  550. setSelectedValue(mergedValue.value);
  551. if (!startValueTexts.value.length || startValueTexts.value[0] === '') {
  552. triggerStartTextChange('');
  553. } else if (firstStartValueText.value !== startText.value) {
  554. resetStartText();
  555. }
  556. if (!endValueTexts.value.length || endValueTexts.value[0] === '') {
  557. triggerEndTextChange('');
  558. } else if (firstEndValueText.value !== endText.value) {
  559. resetEndText();
  560. }
  561. }
  562. });
  563. // Sync innerValue with control mode
  564. (0, _vue.watch)([startStr, endStr], function () {
  565. setSelectedValue(mergedValue.value);
  566. });
  567. // ============================ Warning ============================
  568. if (process.env.NODE_ENV !== 'production') {
  569. (0, _vue.watchEffect)(function () {
  570. var value = props.value,
  571. disabled = props.disabled;
  572. if (value && Array.isArray(disabled) && ((0, _miscUtil.getValue)(disabled, 0) && !(0, _miscUtil.getValue)(value, 0) || (0, _miscUtil.getValue)(disabled, 1) && !(0, _miscUtil.getValue)(value, 1))) {
  573. (0, _warning.warning)(false, '`disabled` should not set with empty `value`. You should set `allowEmpty` or `value` instead.');
  574. }
  575. });
  576. }
  577. expose({
  578. focus: function focus() {
  579. if (startInputRef.value) {
  580. startInputRef.value.focus();
  581. }
  582. },
  583. blur: function blur() {
  584. if (startInputRef.value) {
  585. startInputRef.value.blur();
  586. }
  587. if (endInputRef.value) {
  588. endInputRef.value.blur();
  589. }
  590. }
  591. });
  592. // ============================ Ranges =============================
  593. var rangeList = (0, _vue.computed)(function () {
  594. return Object.keys(props.ranges || {}).map(function (label) {
  595. var range = props.ranges[label];
  596. var newValues = typeof range === 'function' ? range() : range;
  597. return {
  598. label: label,
  599. onClick: function onClick() {
  600. triggerChange(newValues, null);
  601. _triggerOpen(false, mergedActivePickerIndex.value);
  602. },
  603. onMouseenter: function onMouseenter() {
  604. setRangeHoverValue(newValues);
  605. },
  606. onMouseleave: function onMouseleave() {
  607. setRangeHoverValue(null);
  608. }
  609. };
  610. });
  611. });
  612. // ============================= Panel =============================
  613. var panelHoverRangedValue = (0, _vue.computed)(function () {
  614. if (mergedOpen.value && hoverRangedValue.value && hoverRangedValue.value[0] && hoverRangedValue.value[1] && props.generateConfig.isAfter(hoverRangedValue.value[1], hoverRangedValue.value[0])) {
  615. return hoverRangedValue.value;
  616. } else {
  617. return null;
  618. }
  619. });
  620. function renderPanel() {
  621. var panelPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  622. var panelProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  623. var generateConfig = props.generateConfig,
  624. showTime = props.showTime,
  625. dateRender = props.dateRender,
  626. direction = props.direction,
  627. _disabledTime = props.disabledTime,
  628. prefixCls = props.prefixCls,
  629. locale = props.locale;
  630. var panelShowTime = showTime;
  631. if (showTime && (0, _typeof2.default)(showTime) === 'object' && showTime.defaultValue) {
  632. var timeDefaultValues = showTime.defaultValue;
  633. panelShowTime = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, showTime), {}, {
  634. defaultValue: (0, _miscUtil.getValue)(timeDefaultValues, mergedActivePickerIndex.value) || undefined
  635. });
  636. }
  637. var panelDateRender = null;
  638. if (dateRender) {
  639. panelDateRender = function panelDateRender(_ref2) {
  640. var date = _ref2.current,
  641. today = _ref2.today;
  642. return dateRender({
  643. current: date,
  644. today: today,
  645. info: {
  646. range: mergedActivePickerIndex.value ? 'end' : 'start'
  647. }
  648. });
  649. };
  650. }
  651. return (0, _vue.createVNode)(_RangeContext.RangeContextProvider, {
  652. "value": {
  653. inRange: true,
  654. panelPosition: panelPosition,
  655. rangedValue: rangeHoverValue.value || selectedValue.value,
  656. hoverRangedValue: panelHoverRangedValue.value
  657. }
  658. }, {
  659. default: function _default() {
  660. return [(0, _vue.createVNode)(_PickerPanel.default, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), panelProps), {}, {
  661. "dateRender": panelDateRender,
  662. "showTime": panelShowTime,
  663. "mode": mergedModes.value[mergedActivePickerIndex.value],
  664. "generateConfig": generateConfig,
  665. "style": undefined,
  666. "direction": direction,
  667. "disabledDate": mergedActivePickerIndex.value === 0 ? disabledStartDate : disabledEndDate,
  668. "disabledTime": function disabledTime(date) {
  669. if (_disabledTime) {
  670. return _disabledTime(date, mergedActivePickerIndex.value === 0 ? 'start' : 'end');
  671. }
  672. return false;
  673. },
  674. "class": (0, _classNames5.default)((0, _defineProperty2.default)({}, "".concat(prefixCls, "-panel-focused"), mergedActivePickerIndex.value === 0 ? !startTyping.value : !endTyping.value)),
  675. "value": (0, _miscUtil.getValue)(selectedValue.value, mergedActivePickerIndex.value),
  676. "locale": locale,
  677. "tabIndex": -1,
  678. "onPanelChange": function onPanelChange(date, newMode) {
  679. // clear hover value when panel change
  680. if (mergedActivePickerIndex.value === 0) {
  681. onStartLeave(true);
  682. }
  683. if (mergedActivePickerIndex.value === 1) {
  684. onEndLeave(true);
  685. }
  686. triggerModesChange((0, _miscUtil.updateValues)(mergedModes.value, newMode, mergedActivePickerIndex.value), (0, _miscUtil.updateValues)(selectedValue.value, date, mergedActivePickerIndex.value));
  687. var viewDate = date;
  688. if (panelPosition === 'right' && mergedModes.value[mergedActivePickerIndex.value] === newMode) {
  689. viewDate = (0, _dateUtil.getClosingViewDate)(viewDate, newMode, generateConfig, -1);
  690. }
  691. setViewDate(viewDate, mergedActivePickerIndex.value);
  692. },
  693. "onOk": null,
  694. "onSelect": undefined,
  695. "onChange": undefined,
  696. "defaultValue": mergedActivePickerIndex.value === 0 ? (0, _miscUtil.getValue)(selectedValue.value, 1) : (0, _miscUtil.getValue)(selectedValue.value, 0)
  697. }), null)];
  698. }
  699. });
  700. }
  701. var onContextSelect = function onContextSelect(date, type) {
  702. var values = (0, _miscUtil.updateValues)(selectedValue.value, date, mergedActivePickerIndex.value);
  703. if (type === 'submit' || type !== 'key' && !needConfirmButton.value) {
  704. // triggerChange will also update selected values
  705. triggerChange(values, mergedActivePickerIndex.value);
  706. // clear hover value style
  707. if (mergedActivePickerIndex.value === 0) {
  708. onStartLeave();
  709. } else {
  710. onEndLeave();
  711. }
  712. } else {
  713. setSelectedValue(values);
  714. }
  715. };
  716. (0, _PanelContext.useProvidePanel)({
  717. operationRef: operationRef,
  718. hideHeader: (0, _vue.computed)(function () {
  719. return props.picker === 'time';
  720. }),
  721. onDateMouseenter: onDateMouseenter,
  722. onDateMouseleave: onDateMouseleave,
  723. hideRanges: (0, _vue.computed)(function () {
  724. return true;
  725. }),
  726. onSelect: onContextSelect,
  727. open: mergedOpen
  728. });
  729. return function () {
  730. var _classNames2, _classNames3, _classNames4;
  731. var _props$prefixCls = props.prefixCls,
  732. prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
  733. id = props.id,
  734. popupStyle = props.popupStyle,
  735. dropdownClassName = props.dropdownClassName,
  736. transitionName = props.transitionName,
  737. dropdownAlign = props.dropdownAlign,
  738. getPopupContainer = props.getPopupContainer,
  739. generateConfig = props.generateConfig,
  740. locale = props.locale,
  741. placeholder = props.placeholder,
  742. autofocus = props.autofocus,
  743. _props$picker = props.picker,
  744. picker = _props$picker === void 0 ? 'date' : _props$picker,
  745. showTime = props.showTime,
  746. _props$separator = props.separator,
  747. separator = _props$separator === void 0 ? '~' : _props$separator,
  748. disabledDate = props.disabledDate,
  749. panelRender = props.panelRender,
  750. allowClear = props.allowClear,
  751. suffixIcon = props.suffixIcon,
  752. clearIcon = props.clearIcon,
  753. inputReadOnly = props.inputReadOnly,
  754. renderExtraFooter = props.renderExtraFooter,
  755. onMouseenter = props.onMouseenter,
  756. onMouseleave = props.onMouseleave,
  757. onMouseup = props.onMouseup,
  758. _onOk = props.onOk,
  759. components = props.components,
  760. direction = props.direction,
  761. _props$autocomplete = props.autocomplete,
  762. autocomplete = _props$autocomplete === void 0 ? 'off' : _props$autocomplete;
  763. var arrowPositionStyle = direction === 'rtl' ? {
  764. right: "".concat(arrowLeft.value, "px")
  765. } : {
  766. left: "".concat(arrowLeft.value, "px")
  767. };
  768. function renderPanels() {
  769. var panels;
  770. var extraNode = (0, _getExtraFooter.default)(prefixCls, mergedModes.value[mergedActivePickerIndex.value], renderExtraFooter);
  771. var rangesNode = (0, _getRanges.default)({
  772. prefixCls: prefixCls,
  773. components: components,
  774. needConfirmButton: needConfirmButton.value,
  775. okDisabled: !(0, _miscUtil.getValue)(selectedValue.value, mergedActivePickerIndex.value) || disabledDate && disabledDate(selectedValue.value[mergedActivePickerIndex.value]),
  776. locale: locale,
  777. rangeList: rangeList.value,
  778. onOk: function onOk() {
  779. if ((0, _miscUtil.getValue)(selectedValue.value, mergedActivePickerIndex.value)) {
  780. // triggerChangeOld(selectedValue.value);
  781. triggerChange(selectedValue.value, mergedActivePickerIndex.value);
  782. if (_onOk) {
  783. _onOk(selectedValue.value);
  784. }
  785. }
  786. }
  787. });
  788. if (picker !== 'time' && !showTime) {
  789. var viewDate = mergedActivePickerIndex.value === 0 ? startViewDate.value : endViewDate.value;
  790. var nextViewDate = (0, _dateUtil.getClosingViewDate)(viewDate, picker, generateConfig);
  791. var currentMode = mergedModes.value[mergedActivePickerIndex.value];
  792. var showDoublePanel = currentMode === picker;
  793. var leftPanel = renderPanel(showDoublePanel ? 'left' : false, {
  794. pickerValue: viewDate,
  795. onPickerValueChange: function onPickerValueChange(newViewDate) {
  796. setViewDate(newViewDate, mergedActivePickerIndex.value);
  797. }
  798. });
  799. var rightPanel = renderPanel('right', {
  800. pickerValue: nextViewDate,
  801. onPickerValueChange: function onPickerValueChange(newViewDate) {
  802. setViewDate((0, _dateUtil.getClosingViewDate)(newViewDate, picker, generateConfig, -1), mergedActivePickerIndex.value);
  803. }
  804. });
  805. if (direction === 'rtl') {
  806. panels = (0, _vue.createVNode)(_vue.Fragment, null, [rightPanel, showDoublePanel && leftPanel]);
  807. } else {
  808. panels = (0, _vue.createVNode)(_vue.Fragment, null, [leftPanel, showDoublePanel && rightPanel]);
  809. }
  810. } else {
  811. panels = renderPanel();
  812. }
  813. var mergedNodes = (0, _vue.createVNode)(_vue.Fragment, null, [(0, _vue.createVNode)("div", {
  814. "class": "".concat(prefixCls, "-panels")
  815. }, [panels]), (extraNode || rangesNode) && (0, _vue.createVNode)("div", {
  816. "class": "".concat(prefixCls, "-footer")
  817. }, [extraNode, rangesNode])]);
  818. if (panelRender) {
  819. mergedNodes = panelRender(mergedNodes);
  820. }
  821. return (0, _vue.createVNode)("div", {
  822. "class": "".concat(prefixCls, "-panel-container"),
  823. "style": {
  824. marginLeft: "".concat(panelLeft.value, "px")
  825. },
  826. "ref": panelDivRef,
  827. "onMousedown": function onMousedown(e) {
  828. e.preventDefault();
  829. }
  830. }, [mergedNodes]);
  831. }
  832. var rangePanel = (0, _vue.createVNode)("div", {
  833. "class": (0, _classNames5.default)("".concat(prefixCls, "-range-wrapper"), "".concat(prefixCls, "-").concat(picker, "-range-wrapper")),
  834. "style": {
  835. minWidth: "".concat(popupMinWidth.value, "px")
  836. }
  837. }, [(0, _vue.createVNode)("div", {
  838. "ref": arrowRef,
  839. "class": "".concat(prefixCls, "-range-arrow"),
  840. "style": arrowPositionStyle
  841. }, null), renderPanels()]);
  842. // ============================= Icons =============================
  843. var suffixNode;
  844. if (suffixIcon) {
  845. suffixNode = (0, _vue.createVNode)("span", {
  846. "class": "".concat(prefixCls, "-suffix")
  847. }, [suffixIcon]);
  848. }
  849. var clearNode;
  850. if (allowClear && ((0, _miscUtil.getValue)(mergedValue.value, 0) && !mergedDisabled.value[0] || (0, _miscUtil.getValue)(mergedValue.value, 1) && !mergedDisabled.value[1])) {
  851. clearNode = (0, _vue.createVNode)("span", {
  852. "onMousedown": function onMousedown(e) {
  853. e.preventDefault();
  854. e.stopPropagation();
  855. },
  856. "onMouseup": function onMouseup(e) {
  857. e.preventDefault();
  858. e.stopPropagation();
  859. var values = mergedValue.value;
  860. if (!mergedDisabled.value[0]) {
  861. values = (0, _miscUtil.updateValues)(values, null, 0);
  862. }
  863. if (!mergedDisabled.value[1]) {
  864. values = (0, _miscUtil.updateValues)(values, null, 1);
  865. }
  866. triggerChange(values, null);
  867. _triggerOpen(false, mergedActivePickerIndex.value);
  868. },
  869. "class": "".concat(prefixCls, "-clear")
  870. }, [clearIcon || (0, _vue.createVNode)("span", {
  871. "class": "".concat(prefixCls, "-clear-btn")
  872. }, null)]);
  873. }
  874. var inputSharedProps = {
  875. size: (0, _uiUtil.getInputSize)(picker, formatList.value[0], generateConfig)
  876. };
  877. var activeBarLeft = 0;
  878. var activeBarWidth = 0;
  879. if (startInputDivRef.value && endInputDivRef.value && separatorRef.value) {
  880. if (mergedActivePickerIndex.value === 0) {
  881. activeBarWidth = startInputDivRef.value.offsetWidth;
  882. } else {
  883. activeBarLeft = arrowLeft.value;
  884. activeBarWidth = endInputDivRef.value.offsetWidth;
  885. }
  886. }
  887. var activeBarPositionStyle = direction === 'rtl' ? {
  888. right: "".concat(activeBarLeft, "px")
  889. } : {
  890. left: "".concat(activeBarLeft, "px")
  891. };
  892. // ============================ Return =============================
  893. return (0, _vue.createVNode)(_PickerTrigger.default, {
  894. "visible": mergedOpen.value,
  895. "popupStyle": popupStyle,
  896. "prefixCls": prefixCls,
  897. "dropdownClassName": dropdownClassName,
  898. "dropdownAlign": dropdownAlign,
  899. "getPopupContainer": getPopupContainer,
  900. "transitionName": transitionName,
  901. "range": true,
  902. "direction": direction
  903. }, {
  904. default: function _default() {
  905. return [(0, _vue.createVNode)("div", (0, _objectSpread2.default)({
  906. "ref": containerRef,
  907. "class": (0, _classNames5.default)(prefixCls, "".concat(prefixCls, "-range"), attrs.class, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-disabled"), mergedDisabled.value[0] && mergedDisabled.value[1]), (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-focused"), mergedActivePickerIndex.value === 0 ? startFocused.value : endFocused.value), (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames2)),
  908. "style": attrs.style,
  909. "onClick": onPickerClick,
  910. "onMouseenter": onMouseenter,
  911. "onMouseleave": onMouseleave,
  912. "onMousedown": onPickerMousedown,
  913. "onMouseup": onMouseup
  914. }, (0, _miscUtil.default)(props)), [(0, _vue.createVNode)("div", {
  915. "class": (0, _classNames5.default)("".concat(prefixCls, "-input"), (_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, "".concat(prefixCls, "-input-active"), mergedActivePickerIndex.value === 0), (0, _defineProperty2.default)(_classNames3, "".concat(prefixCls, "-input-placeholder"), !!startHoverValue.value), _classNames3)),
  916. "ref": startInputDivRef
  917. }, [(0, _vue.createVNode)("input", (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
  918. "id": id,
  919. "disabled": mergedDisabled.value[0],
  920. "readonly": inputReadOnly || typeof formatList.value[0] === 'function' || !startTyping.value,
  921. "value": startHoverValue.value || startText.value,
  922. "onInput": function onInput(e) {
  923. triggerStartTextChange(e.target.value);
  924. },
  925. "autofocus": autofocus,
  926. "placeholder": (0, _miscUtil.getValue)(placeholder, 0) || '',
  927. "ref": startInputRef
  928. }, startInputProps.value), inputSharedProps), {}, {
  929. "autocomplete": autocomplete
  930. }), null)]), (0, _vue.createVNode)("div", {
  931. "class": "".concat(prefixCls, "-range-separator"),
  932. "ref": separatorRef
  933. }, [separator]), (0, _vue.createVNode)("div", {
  934. "class": (0, _classNames5.default)("".concat(prefixCls, "-input"), (_classNames4 = {}, (0, _defineProperty2.default)(_classNames4, "".concat(prefixCls, "-input-active"), mergedActivePickerIndex.value === 1), (0, _defineProperty2.default)(_classNames4, "".concat(prefixCls, "-input-placeholder"), !!endHoverValue.value), _classNames4)),
  935. "ref": endInputDivRef
  936. }, [(0, _vue.createVNode)("input", (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
  937. "disabled": mergedDisabled.value[1],
  938. "readonly": inputReadOnly || typeof formatList.value[0] === 'function' || !endTyping.value,
  939. "value": endHoverValue.value || endText.value,
  940. "onInput": function onInput(e) {
  941. triggerEndTextChange(e.target.value);
  942. },
  943. "placeholder": (0, _miscUtil.getValue)(placeholder, 1) || '',
  944. "ref": endInputRef
  945. }, endInputProps.value), inputSharedProps), {}, {
  946. "autocomplete": autocomplete
  947. }), null)]), (0, _vue.createVNode)("div", {
  948. "class": "".concat(prefixCls, "-active-bar"),
  949. "style": (0, _objectSpread2.default)((0, _objectSpread2.default)({}, activeBarPositionStyle), {}, {
  950. width: "".concat(activeBarWidth, "px"),
  951. position: 'absolute'
  952. })
  953. }, null), suffixNode, clearNode, getPortal()])];
  954. },
  955. popupElement: function popupElement() {
  956. return rangePanel;
  957. }
  958. });
  959. };
  960. }
  961. });
  962. }
  963. var InterRangerPicker = RangerPicker();
  964. var _default2 = InterRangerPicker;
  965. exports.default = _default2;