You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1 lines
18 KiB

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<t.computeShortcutList.length,o=null===o?t.computeIsDateTimeType||a.multiple:o,l=null===l?t.computeIsClearable&&o&&"time"!==r:l;return e("div",{ref:"refInputPanel",class:["vxe-table--ignore-clear vxe-date-picker--panel","type--".concat(r),_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},"size--".concat(m),m),"is--transfer",v),"ani--leave",c),"ani--enter",s),"show--top",!!(b||g||x&&("top"===h||"header"===h))),"show--bottom",!!(_||y||x&&("bottom"===h||"footer"===h))),"show--left",!!(D||x&&"left"===h)),"show--right",!!(i||x&&"right"===h))],attrs:{placement:d},style:p},u&&(s||c)?[e("div",{ref:"refPanelWrapper",class:["vxe-date-picker--layout-all-wrapper","type--".concat(r),_defineProperty({},"size--".concat(m),m)]},[b?e("div",{class:"vxe-date-picker--layout-top-wrapper"},b({})):t.renderShortcutBtn(e,"top"),e("div",{class:"vxe-date-picker--layout-body-layout-wrapper"},[D?e("div",{class:"vxe-date-picker--layout-left-wrapper"},D({})):t.renderShortcutBtn(e,"left",!0),e("div",{class:"vxe-date-picker--layout-body-content-wrapper"},[g?e("div",{class:"vxe-date-picker--layout-header-wrapper"},g({})):t.renderShortcutBtn(e,"header"),e("div",{class:"vxe-date-picker--layout-body-wrapper"},[e(_datePanel.default,{ref:"refDatePanel",props:{value:n.inputValue,type:a.type,className:a.className,multiple:a.multiple,limitCount:a.limitCount,startDate:a.startDate,endDate:a.endDate,defaultDate:a.defaultDate,minDate:a.minDate,maxDate:a.maxDate,startDay:a.startDay,labelFormat:a.labelFormat,valueFormat:a.valueFormat,timeFormat:a.timeFormat,festivalMethod:a.festivalMethod,disabledMethod:a.disabledMethod,selectDay:a.selectDay},on:{change:t.panelChangeEvent}})]),e("div",{class:"vxe-date-picker--layout-footer-wrapper"},[e("div",{class:"vxe-date-picker--layout-footer-custom"},y?y({}):[t.renderShortcutBtn(e,"footer")]),l||o?e("div",{class:"vxe-date-picker--layout-footer-btns"},[l?e(_button.default,{props:{size:"mini",disabled:""===f||_xeUtils.default.eqNull(f),content:(0,_ui.getI18n)("vxe.button.clear")},on:{click:t.clearValueEvent}}):(0,_ui.renderEmptyElement)(t),o?e(_button.default,{props:{size:"mini",status:"primary",content:(0,_ui.getI18n)("vxe.button.confirm")},on:{click:t.confirmEvent}}):(0,_ui.renderEmptyElement)(t)]):(0,_ui.renderEmptyElement)(t)])]),i?e("div",{class:"vxe-date-picker--layout-right-wrapper"},i({})):t.renderShortcutBtn(e,"right",!0)]),_?e("div",{class:"vxe-date-picker--layout-bottom-wrapper"},_({})):t.renderShortcutBtn(e,"bottom")])]:[])},renderPrefixIcon:function(e){var t=this.$scopedSlots,a=this.prefixIcon,t=t.prefix;return t||a?e("div",{class:"vxe-date-picker--prefix",on:{click:this.clickPrefixEvent}},[e("div",{class:"vxe-date-picker--prefix-icon"},t?(0,_vn.getSlotVNs)(t({})):[e("i",{class:a})])]):null},renderSuffixIcon:function(e){var t=this,a=t.$scopedSlots,i=t.suffixIcon,n=t.reactData.inputValue,a=a.suffix,r=t.computeIsClearable;return e("div",{class:["vxe-date-picker--suffix",{"is--clear":r&&!t.computeIsDisabled&&!(""===n||_xeUtils.default.eqNull(n))}]},[r?e("div",{class:"vxe-date-picker--clear-icon",on:{click:t.clearValueEvent}},[e("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]):(0,_ui.renderEmptyElement)(t),t.renderExtraSuffixIcon(e),a||i?e("div",{class:"vxe-date-picker--suffix-icon",on:{click:t.clickSuffixEvent}},a?(0,_vn.getSlotVNs)(a({})):[e("i",{class:i})]):(0,_ui.renderEmptyElement)(t)])},renderExtraSuffixIcon:function(e){return e("div",{class:"vxe-date-picker--control-icon",on:{click:this.datePickerOpenEvent}},[e("i",{class:["vxe-date-picker--date-picker-icon",(0,_ui.getIcon)().DATE_PICKER_DATE]})])},renderVN:function(e){var t,a,i,n,r=this,l=r.reactData,o=r.className,u=r.type,c=r.name,s=r.autoComplete,d=l.inputValue,p=l.inputLabel,f=l.visiblePanel,l=l.isActivated,m=r.computeSize,v=r.computeIsDisabled,h=r.computePanelLabel;return r.computeFormReadonly?e("div",{ref:"refElem",class:["vxe-date-picker--readonly","type--".concat(u),o]},h):(h=r.computeInputReadonly,t=r.computeInpPlaceholder,a=r.computeIsClearable,i=r.renderPrefixIcon(e),n=r.renderSuffixIcon(e),e("div",{ref:"refElem",class:["vxe-date-picker","type--".concat(u),o,_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},"size--".concat(m),m),"is--prefix",!!i),"is--suffix",!!n),"is--visible",f),"is--disabled",v),"is--active",l),"show--clear",a&&!v&&!(""===d||_xeUtils.default.eqNull(d)))],attrs:{spellcheck:!1}},[i||(0,_ui.renderEmptyElement)(r),e("div",{class:"vxe-date-picker--wrapper"},[e("input",{ref:"refInputTarget",class:"vxe-date-picker--inner",domProps:{value:p},attrs:{name:c,type:"text",placeholder:t,readonly:h,disabled:v,autocomplete:s},on:{keydown:r.keydownEvent,keyup:r.keyupEvent,click:r.clickEvent,input:r.inputEvent,change:r.changeEvent,focus:r.focusEvent,blur:r.blurEvent}})]),n||(0,_ui.renderEmptyElement)(r),r.renderPanel(e)]))}},watch:{computePanelLabel:function(e){this.reactData.inputLabel=e},value:function(){this.updateModelValue()}},created:function(){var e=this;e.updateModelValue(),_ui.globalEvents.on(e,"mousewheel",e.handleGlobalMousewheelEvent),_ui.globalEvents.on(e,"mousedown",e.handleGlobalMousedownEvent),_ui.globalEvents.on(e,"keydown",e.handleGlobalKeydownEvent),_ui.globalEvents.on(e,"blur",e.handleGlobalBlurEvent),_ui.globalEvents.on(e,"resize",e.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this,t=e.$refs.refInputPanel;t&&t.parentNode&&t.parentNode.removeChild(t),_ui.globalEvents.off(e,"mousewheel"),_ui.globalEvents.off(e,"mousedown"),_ui.globalEvents.off(e,"blur"),_ui.globalEvents.off(e,"resize")},render:function(e){return this.renderVN(e)}});