Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("../../date-panel/src/util"),_log=require("../../ui/src/log"),_datePanel=_interopRequireDefault(require("../../date-panel/src/date-panel")),_button=_interopRequireDefault(require("../../button/src/button")),_buttonGroup=_interopRequireDefault(require("../../button/src/button-group"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperty(e,t,a){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:e+""}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var a=e[Symbol.toPrimitive];if(void 0===a)return("string"===t?String:Number)(e);a=a.call(e,t||"default");if("object"!=_typeof(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}var _default2=exports.default=(0,_comp.defineVxeComponent)({name:"VxeDatePicker",mixins:[_ui.globalMixins.sizeMixin],model:{prop:"value",event:"modelValue"},props:{value:[String,Number,Date],immediate:{type:Boolean,default:!0},name:String,type:{type:String,default:"date"},clearable:{type:Boolean,default:function(){return(0,_ui.getConfig)().datePicker.clearable}},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},placeholder:String,autoComplete:{type:String,default:"off"},form:String,className:String,size:{type:String,default:function(){return(0,_ui.getConfig)().datePicker.size||(0,_ui.getConfig)().size}},multiple:Boolean,limitCount:{type:[String,Number],default:function(){return(0,_ui.getConfig)().datePicker.limitCount}},startDate:{type:[String,Number,Date],default:function(){return(0,_ui.getConfig)().datePicker.startDate}},endDate:{type:[String,Number,Date],default:function(){return(0,_ui.getConfig)().datePicker.endDate}},defaultDate:[String,Number,Date],minDate:[String,Number,Date],maxDate:[String,Number,Date],startDay:{type:[String,Number],default:function(){return(0,_ui.getConfig)().datePicker.startDay}},labelFormat:String,valueFormat:String,timeFormat:String,editable:{type:Boolean,default:!0},festivalMethod:{type:Function,default:function(){return(0,_ui.getConfig)().datePicker.festivalMethod}},disabledMethod:{type:Function,default:function(){return(0,_ui.getConfig)().datePicker.disabledMethod}},selectDay:{type:[String,Number],default:function(){return(0,_ui.getConfig)().datePicker.selectDay}},showClearButton:{type:Boolean,default:function(){return(0,_ui.getConfig)().datePicker.showClearButton}},showConfirmButton:{type:Boolean,default:function(){return(0,_ui.getConfig)().datePicker.showConfirmButton}},autoClose:{type:Boolean,default:function(){return(0,_ui.getConfig)().datePicker.autoClose}},prefixIcon:String,suffixIcon:String,placement:String,transfer:{type:Boolean,default:null},shortcutConfig:Object,startWeek:Number},inject:{$xeModal:{default:null},$xeDrawer:{default:null},$xeTable:{default:null},$xeForm:{default:null},formItemInfo:{from:"xeFormItemInfo",default:null}},provide:function(){return{$xeDatePicker:this}},data:function(){return{xID:_xeUtils.default.uniqueId(),reactData:{initialized:!1,panelIndex:0,visiblePanel:!1,isAniVisible:!1,panelStyle:{},panelPlacement:"",isActivated:!1,inputValue:"",inputLabel:""},internalData:{hpTimeout:void 0}}},computed:Object.assign(Object.assign({},{}),{computeBtnTransfer:function(){var e=this,t=e.$xeTable,a=e.$xeModal,i=e.$xeDrawer,n=e.$xeForm,e=e.transfer;if(null===e){var r=(0,_ui.getConfig)().datePicker.transfer;if(_xeUtils.default.isBoolean(r))return r;if(t||a||i||n)return!0}return e},computeFormReadonly:function(){var e=this.$xeForm,t=this.readonly;return null===t?!!e&&e.readonly:t},computeIsDisabled:function(){var e=this.$xeForm,t=this.disabled;return null===t?!!e&&e.disabled:t},computeIsDateTimeType:function(){var e=this.type;return"time"===e||"datetime"===e},computeIsDatePickerType:function(){return this.computeIsDateTimeType||-1<["date","week","month","quarter","year"].indexOf(this.type)},computeIsClearable:function(){return this.clearable},computeInputReadonly:function(){var e=this.type,t=this.editable,a=this.multiple;return this.computeFormReadonly||a||!t||"week"===e||"quarter"===e},computeInpPlaceholder:function(){var e=this.placeholder;return(e=e||(0,_ui.getConfig)().datePicker.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")},computeInpImmediate:function(){return this.immediate},computeShortcutOpts:function(){return Object.assign({},(0,_ui.getConfig)().datePicker.shortcutConfig,this.shortcutConfig)},computeShortcutList:function(){var e=this.computeShortcutOpts.options;return e?e.map(function(e,t){return Object.assign({name:"".concat(e.name||e.code||t)},e)}):[]},computeDateLabelFormat:function(){return this.labelFormat||(0,_ui.getI18n)("vxe.input.date.labelFormat.".concat(this.type))},computeDateValueFormat:function(){var e=this.type,t=this.valueFormat;return(0,_util.handleValueFormat)(e,t)},computeFirstDayOfWeek:function(){var e=this.startDay;return _xeUtils.default.toNumber(e)},computePanelLabel:function(){var e=this,t=e.reactData,a=e.type,t=t.inputValue,i=e.computeDateLabelFormat,n=e.computeDateValueFormat,r=e.computeFirstDayOfWeek;return(t?e.multiple?t.split(","):[t]:[]).map(function(e){return(0,_util.parseDateObj)(e,a,{valueFormat:n,labelFormat:i,firstDay:r}).label}).join(", ")}}),methods:{dispatchEvent:function(e,t,a){this.$emit(e,(0,_ui.createEvent)(a,{$drawer:this},t))},emitModel:function(e){var t=this._events;t&&t.modelValue?this.$emit("modelValue",e):this.$emit("model-value",e)},updateModelValue:function(){var e=this.reactData,t=this.value,a="";t&&(a=_xeUtils.default.isNumber(t)&&/^[0-9]{11,15}$/.test("".concat(t))?new Date(t):t),e.inputValue=a},triggerEvent:function(e){var t=this.reactData.inputValue;this.dispatchEvent(e.type,{value:t},e)},handleChange:function(e,t){var a=this,i=a.reactData,n=a.$xeForm,r=a.formItemInfo,l=a.type,o=a.value,u=a.valueFormat,c=a.computeDateValueFormat;i.inputValue=e,(0,_util.hasTimestampValueType)(u)?(i=(i=(0,_util.parseDateValue)(e,l,{valueFormat:c}))?i.getTime():null,a.emitModel(i),o!==i&&(a.dispatchEvent("change",{value:i},t),n)&&r&&n.triggerItemEvent(t,r.itemConfig.field,i)):(0,_util.hasDateValueType)(u)?(i=(0,_util.parseDateValue)(e,l,{valueFormat:c}),a.emitModel(i),(o&&i?_xeUtils.default.toStringDate(o).getTime()!==i.getTime():o!==i)&&(a.dispatchEvent("change",{value:i},t),n)&&r&&n.triggerItemEvent(t,r.itemConfig.field,i)):(a.emitModel(e),_xeUtils.default.toValueString(o)!==e&&(a.dispatchEvent("change",{value:e},t),n)&&r&&n.triggerItemEvent(t,r.itemConfig.field,e))},inputEvent:function(e){var t=this.reactData,a=e.target.value;t.inputLabel=a,this.dispatchEvent("input",{value:a},e)},changeEvent:function(e){this.computeInpImmediate||this.triggerEvent(e)},focusEvent:function(e){this.reactData.isActivated=!0,this.computeIsDatePickerType&&this.datePickerOpenEvent(e),this.triggerEvent(e)},clickPrefixEvent:function(e){var t=this.reactData;this.computeIsDisabled||(t=t.inputValue,this.dispatchEvent("prefix-click",{value:t},e))},hidePanel:function(){var t=this.reactData,a=this.internalData;return new Promise(function(e){t.visiblePanel=!1,a.hpTimeout=setTimeout(function(){t.isAniVisible=!1,e()},350)})},clearValueEvent:function(e,t){this.computeIsDatePickerType&&this.hidePanel(),this.handleChange("",e),this.dispatchEvent("clear",{value:t},e)},clickSuffixEvent:function(e){var t=this.reactData;this.computeIsDisabled||(t=t.inputValue,this.dispatchEvent("suffix-click",{value:t},e))},blurEvent:function(e){var t=this,a=t.reactData,i=t.$xeForm,n=t.formItemInfo,r=t.$refs.refDatePanel,l=a.inputValue;t.computeInpImmediate||t.handleChange(l,e),a.visiblePanel||(a.isActivated=!1,r&&r.checkValue(a.inputLabel)),t.dispatchEvent("blur",{value:l},e),i&&n&&i.triggerItemEvent(e,n.itemConfig.field,l)},keydownEvent:function(e){this.triggerEvent(e)},keyupEvent:function(e){this.triggerEvent(e)},confirmEvent:function(e){var t=this.$refs.refDatePanel;t&&t.confirmByEvent(e),this.hidePanel()},panelChangeEvent:function(e){var t=this.multiple,a=this.autoClose,i=e.value,n=this.computeIsDateTimeType;this.handleChange(i,e.$event),t||n||a&&this.hidePanel()},handleGlobalMousedownEvent:function(e){var t=this,a=t.reactData,i=t.$refs.refDatePanel,n=a.visiblePanel,r=t.$refs.refElem,l=t.$refs.refPanelWrapper;!t.computeIsDisabled&&a.isActivated&&(a.isActivated=(0,_dom.getEventTargetNode)(e,r).flag||(0,_dom.getEventTargetNode)(e,l).flag,a.isActivated||n&&(t.hidePanel(),i)&&i.checkValue(a.inputLabel))},handleGlobalKeydownEvent:function(e){var t,a=this.reactData,i=a.visiblePanel;this.computeIsDisabled||(t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),e=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),t&&(a.isActivated=!1),i&&(e||t)&&this.hidePanel())},handleGlobalMousewheelEvent:function(e){var t=this,a=t.reactData.visiblePanel;t.computeIsDisabled||a&&(a=t.$refs.refPanelWrapper,(0,_dom.getEventTargetNode)(e,a).flag?t.updatePlacement():t.hidePanel())},handleGlobalBlurEvent:function(){var e=this.reactData,t=this.$refs.refDatePanel,a=e.isActivated,i=e.visiblePanel;i&&this.hidePanel(),a&&(e.isActivated=!1),(i||a)&&(t&&t.checkValue(e.inputLabel),i=this.$refs.refInputTarget)&&i.blur()},handleGlobalResizeEvent:function(){this.reactData.visiblePanel&&this.updatePlacement()},updateZindex:function(){var e=this.reactData;e.panelIndex<(0,_utils.getLastZIndex)()&&(e.panelIndex=(0,_utils.nextZIndex)())},updatePlacement:function(){function e(){var e=(0,_dom.updatePanelPlacement)(r,l,{placement:i,teleportTo:o}),t=Object.assign(e.style,{zIndex:n});a.panelStyle=t,a.panelPlacement=e.placement}var t=this,a=t.reactData,i=t.placement,n=a.panelIndex,r=t.$refs.refInputTarget,l=t.$refs.refInputPanel,o=t.computeBtnTransfer;return e(),t.$nextTick().then(e)},showPanel:function(){var e=this,t=e.reactData,a=e.internalData,i=t.visiblePanel,n=e.computeBtnTransfer,r=e.$refs.refInputPanel;return e.computeIsDisabled||i?e.$nextTick():(t.initialized||(t.initialized=!0,n&&r&&document.body.appendChild(r)),a.hpTimeout&&(clearTimeout(a.hpTimeout),a.hpTimeout=void 0),t.isActivated=!0,t.isAniVisible=!0,setTimeout(function(){t.visiblePanel=!0},10),e.updateZindex(),e.updatePlacement())},datePickerOpenEvent:function(e){this.computeFormReadonly||(e.preventDefault(),this.showPanel())},clickEvent:function(e){this.triggerEvent(e)},handleShortcutEvent:function(e){var t=e.option,a=e.$event,i=this,e=i.reactData,n=i.type,e=e.inputValue,r=i.computeShortcutOpts,l=r.autoClose,o=t.code,u=t.clickMethod,c={$datePicker:i,option:t,value:p=e,code:o};if(!u&&o){t=_ui.commands.get(o),e=t?t.datePickerCommandMethod:null;if(e)e(c);else{var s=i.computeDateValueFormat,d=i.computeFirstDayOfWeek;switch(o){case"now":case"prev":case"next":case"minus":case"plus":var p=(0,_util.getDateByCode)(o,p,n,{valueFormat:s,firstDay:d}).value;c.value=p,i.handleChange(p,a);break;default:(0,_log.errLog)("vxe.error.notCommands",[o])}}}else{t=u||r.clickMethod;t&&t(c)}l&&i.hidePanel(),i.dispatchEvent("shortcut-click",c,a)},setModelValue:function(e){this.reactData.inputValue=e,this.emitModel(e)},setModelValueByEvent:function(e,t){this.handleChange(t||"",e)},focus:function(){var e=this.reactData,t=this.$refs.refInputTarget;return e.isActivated=!0,t.focus(),this.$nextTick()},blur:function(){var e=this.reactData;return this.$refs.refInputTarget.blur(),e.isActivated=!1,this.$nextTick()},select:function(){var e=this.reactData;return this.$refs.refInputTarget.select(),e.isActivated=!1,this.$nextTick()},renderShortcutBtn:function(e,t,a){var i=this.computeShortcutOpts,n=i.position,r=i.align,l=i.mode,o=this.computeShortcutList;return(0,_utils.isEnableConf)(i)&&o.length&&(n||"left")===t?e("div",{class:"vxe-date-picker--layout-".concat(t,"-wrapper")},[e(_buttonGroup.default,{props:{options:o,mode:l,align:r,vertical:a},on:{click:this.handleShortcutEvent}})]):(0,_ui.renderEmptyElement)(this)},renderPanel:function(e){var t=this,a=t,i=t.$scopedSlots,n=t.reactData,r=a.type,l=a.showClearButton,o=a.showConfirmButton,u=n.initialized,c=n.isAniVisible,s=n.visiblePanel,d=n.panelPlacement,p=n.panelStyle,f=n.inputValue,m=t.computeSize,v=t.computeBtnTransfer,h=t.computeShortcutOpts.position,g=i.header,y=i.footer,b=i.top,_=i.bottom,D=i.left,i=i.right,x=0