| 1 |
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,exports.getRowUniqueId=getRowUniqueId;var _comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_utils=require("../../ui/src/utils"),_log=require("../../ui/src/log"),_input=_interopRequireDefault(require("../../input/src/input"));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,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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 n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);n=n.call(e,t||"default");if("object"!=_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function createInternalData(){return{fullRowMaps:{}}}var _default2=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableSelect",mixins:[_ui.globalMixins.sizeMixin],model:{prop:"value",event:"modelValue"},props:{value:[String,Number,Array],clearable:Boolean,placeholder:{type:String,default:function(){return _xeUtils.default.eqNull((0,_ui.getConfig)().tableSelect.placeholder)?(0,_ui.getI18n)("vxe.base.pleaseSelect"):(0,_ui.getConfig)().tableSelect.placeholder}},readonly:{type:Boolean,default:null},loading:Boolean,disabled:{type:Boolean,default:null},multiple:Boolean,className:[String,Function],prefixIcon:String,placement:String,columns:Array,options:Array,optionProps:Object,lazyOptions:Array,zIndex:Number,size:{type:String,default:function(){return(0,_ui.getConfig)().tableSelect.size||(0,_ui.getConfig)().size}},popupConfig:Object,gridConfig:Object,transfer:{type:Boolean,default:null}},inject:{$xeModal:{default:null},$xeDrawer:{default:null},$xeTable:{default:null},$xeForm:{default:null},formItemInfo:{from:"xeFormItemInfo",default:null}},provide:function(){return{$xeTableSelect:this}},data:function(){return{xID:_xeUtils.default.uniqueId(),reactData:{initialized:!1,tableColumns:[],fullOptionList:[],panelIndex:0,panelStyle:{},panelPlacement:null,triggerFocusPanel:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1},internalData:createInternalData(),gridEvents:{}}},computed:Object.assign(Object.assign({},{}),{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},computeBtnTransfer:function(){var e=this,t=e.$xeForm,n=e.$xeTable,i=e.$xeModal,a=e.$xeDrawer,e=e.transfer;if(null===e){var l=(0,_ui.getConfig)().tableSelect.transfer;if(_xeUtils.default.isBoolean(l))return l;if(n||i||a||t)return!0}return e},computePropsOpts:function(){return this.optionProps||{}},computeRowOpts:function(){var e=this.computeGridOpts;return Object.assign({},e.rowConfig,{isCurrent:!0})},computeRowKeyField:function(){return this.computeRowOpts.keyField||"_X_ROW_KEY"},computeLabelField:function(){return this.computePropsOpts.label||"label"},computeValueField:function(){return this.computePropsOpts.value||"value"},computePopupOpts:function(){return Object.assign({},(0,_ui.getConfig)().tableSelect.popupConfig,this.popupConfig)},computeGridOpts:function(){return Object.assign({},(0,_ui.getConfig)().tableSelect.gridConfig,this.gridConfig,{data:void 0})},computeSelectGridOpts:function(){var a=this,e=a.computeGridOpts,l=e.pagerConfig,t=e.proxyConfig;if(t){var n,o,r,i=t.ajax;if(i&&i.query)return n=_xeUtils.default.clone(t,!0),(o=i.query)&&(r=t.response||t.props||{},Object.assign(n.ajax,{query:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return Promise.resolve(o.apply(void 0,[e].concat(n))).then(function(e){var t,n=[];return n=l?(t=r.result,(_xeUtils.default.isFunction(t)?t({data:e,$table:null,$grid:null,$gantt:null}):_xeUtils.default.get(e,t||"result"))||[]):((t=r.list)?_xeUtils.default.isFunction(t)?t({data:e,$table:null,$grid:null,$gantt:null}):_xeUtils.default.get(e,t):e)||[],a.cacheDataMap(n||[]),e})}})),Object.assign({},e,{proxyConfig:n})}return e},computeSelectLabel:function(){var e=this,t=e.reactData,n=e.value,i=e.lazyOptions,t=t.fullOptionList,a=e.internalData.fullRowMaps,l=e.computeValueField,o=e.computeLabelField;return t?(_xeUtils.default.isArray(n)?n:[n]).map(function(t){var e=a[t];if(e)return e.item[o];if(i){e=i.find(function(e){return e[l]===t});if(e)return e[o]}return t}).join(", "):""},computePopupWrapperStyle:function(){var e=this.computePopupOpts,t=e.height,e=e.width,n={};return e&&(n.width=(0,_dom.toCssUnit)(e)),t&&(n.height=(0,_dom.toCssUnit)(t)),n}}),methods:{dispatchEvent:function(e,t,n){this.$emit(e,(0,_ui.createEvent)(n,{$tableSelect:this},t))},emitModel:function(e){var t=this._events;t&&t.modelValue?this.$emit("modelValue",e):this.$emit("model-value",e)},getRowid:function(e){e=e[this.computeRowKeyField];return e?encodeURIComponent(e):""},getRowsByValue:function(e){var t=this.internalData.fullRowMaps,n=[];return(_xeUtils.default.eqNull(e)?[]:_xeUtils.default.isArray(e)?e:[e]).forEach(function(e){e=t[e];e&&n.push(e.item)}),n},updateModel:function(n){var i=this,a=i.multiple;i.$nextTick(function(){var e,t=i.$refs.refGrid;t&&(e=i.getRowsByValue(n)).length&&(a?t.setCheckboxRow(e,!0):t.setRadioRow(e[0]))})},loadTableColumn:function(e){var t,n,i,a,l=this.reactData;e&&e.length&&(t=this.multiple,a=i=!(n=[]),e.forEach(function(e){i||"radio"!==e.type?a||"checkbox"!==e.type||(a=!0):i=!0,n.push(e)}),t?a||n.unshift({type:"checkbox",width:70}):i||n.unshift({type:"radio",width:70}),l.tableColumns=n)},cacheDataMap:function(e){var a=this,t=a,n=a.reactData,i=a.internalData,l=t.options,o=a.computeRowKeyField,r=a.computeValueField,u=a.computeGridOpts,s=u.treeConfig,u=u.pagerConfig,c={},p={};s||_xeUtils.default.arrayEach(e||l||[],function(e,t,n){var i=(i=a.getRowid(e))||getRowUniqueId(),i=(p[i]&&(0,_log.errLog)("vxe.error.repeatKey",["[table-select] ".concat(o),i]),p[i]=!0,e[r]);c[i]&&(0,_log.errLog)("vxe.error.repeatKey",["[table-select] ".concat(r),i]),c[i]={item:e,index:t,items:n,parent:null,nodes:[]}}),n.fullOptionList=e||l||[],i.fullRowMaps=u?Object.assign({},i.fullRowMaps,c):c,a.updateModel(t.value)},updateZindex:function(){var e=this.reactData,t=this.zIndex;t?e.panelIndex=t:e.panelIndex<(0,_utils.getLastZIndex)()&&(e.panelIndex=(0,_utils.nextZIndex)())},updatePlacement:function(){function e(){var e=(0,_dom.updatePanelPlacement)(l,o,{placement:i,teleportTo:r}),t=Object.assign(e.style,{zIndex:a});n.panelStyle=t,n.panelPlacement=e.placement}var t=this,n=t.reactData,i=t.placement,a=n.panelIndex,l=t.$refs.refElem,o=t.$refs.refOptionPanel,r=t.computeBtnTransfer;return e(),t.$nextTick().then(e)},showOptionPanel:function(){var e,t,n=this,i=n,a=n.reactData,l=n.internalData;i.loading||n.computeIsDisabled||(l.vpTimeout&&clearTimeout(l.vpTimeout),l.hpTimeout&&clearTimeout(l.hpTimeout),a.initialized||(a.initialized=!0,e=n.computeBtnTransfer,t=n.$refs.refOptionPanel,e&&t&&document.body.appendChild(t)),a.isActivated=!0,a.isAniVisible=!0,l.vpTimeout=setTimeout(function(){a.visiblePanel=!0,n.updateModel(i.value),l.vpTimeout=void 0},10),n.updateZindex(),n.updatePlacement())},hideOptionPanel:function(){var e=this.reactData,t=this.internalData;e.visiblePanel=!1,t.hpTimeout=setTimeout(function(){e.isAniVisible=!1},350)},changeEvent:function(e,t,n){var i=this,a=i,l=i.$xeForm,o=i.formItemInfo;i.emitModel(t),t!==a.value&&(i.dispatchEvent("change",{value:t,row:n,option:n},e),l)&&o&&l.triggerItemEvent(e,o.itemConfig.field,t)},clearValueEvent:function(e,t){this.changeEvent(e,t,null),this.dispatchEvent("clear",{value:t},e)},clearEvent:function(e,t){this.clearValueEvent(t,null),this.hideOptionPanel()},handleGlobalMousewheelEvent:function(e){var t=this,n=t.reactData.visiblePanel;t.computeIsDisabled||n&&(n=t.$refs.refOptionPanel,(0,_dom.getEventTargetNode)(e,n).flag?t.updatePlacement():t.hideOptionPanel())},handleGlobalMousedownEvent:function(e){var t,n,i=this,a=i.reactData,l=a.visiblePanel;i.computeIsDisabled||(t=i.$refs.refElem,n=i.$refs.refOptionPanel,a.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,n).flag,l&&!a.isActivated&&i.hideOptionPanel())},handleGlobalBlurEvent:function(){var e=this.reactData,t=e.visiblePanel,n=e.isActivated;t&&this.hideOptionPanel(),n&&(e.isActivated=!1),(t||n)&&(e=this.$refs.refInput)&&e.blur()},handleGlobalResizeEvent:function(){this.reactData.visiblePanel&&this.updatePlacement()},focusEvent:function(e){var t=this.reactData;this.computeIsDisabled||t.visiblePanel||(t.triggerFocusPanel=!0,this.showOptionPanel(),setTimeout(function(){t.triggerFocusPanel=!1},150)),this.dispatchEvent("focus",{},e)},clickEvent:function(e){this.togglePanelEvent(e),this.dispatchEvent("click",{},e)},blurEvent:function(e){this.reactData.isActivated=!1,this.dispatchEvent("blur",{},e)},togglePanelEvent:function(e){var t=this.reactData;e.$event.preventDefault(),t.triggerFocusPanel?t.triggerFocusPanel=!1:t.visiblePanel?this.hideOptionPanel():this.showOptionPanel()},radioChangeEvent:function(e){var t=e.$event,e=e.row,n=e[this.computeValueField];this.changeEvent(t,n,e),this.hideOptionPanel()},checkboxChangeEvent:function(e){var t=e.$grid,n=e.$event,e=e.row,i=this.computeValueField;t&&(t=t.getCheckboxRecords().map(function(e){return e[i]}),this.changeEvent(n,t,e))},checkboxAllEvent:function(e){this.checkboxChangeEvent(e)},renderVN:function(e){var t=_ui.VxeUI.getComponent("vxe-grid"),n=this,i=n,a=n.$scopedSlots,l=n.reactData,o=i.className,r=i.options,u=i.loading,s=l.initialized,c=l.isActivated,p=l.isAniVisible,d=l.visiblePanel,f=l.tableColumns,v=n.computeSize,m=n.computeIsDisabled,h=n.computeSelectLabel,g=n.computeBtnTransfer,b=n.computePopupOpts.className,x=n.computeSelectGridOpts,_=n.computeRowOpts,y=n.computePopupWrapperStyle,E=a.header,P=a.footer,O=a.prefix;return n.computeFormReadonly?e("div",{ref:"refElem",class:["vxe-table-select--readonly",o]},[e("span",{class:"vxe-table-select-label"},h)]):e("div",{ref:"refElem",class:["vxe-table-select",o?_xeUtils.default.isFunction(o)?o({$tableSelect:n}):o:"",_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},"size--".concat(v),v),"is--visible",d),"is--disabled",m),"is--loading",u),"is--active",c)]},[e(_input.default,{ref:"refInput",props:{clearable:i.clearable,placeholder:i.placeholder,readonly:!0,disabled:m,type:"text",prefixIcon:i.prefixIcon,suffixIcon:u?(0,_ui.getIcon)().TABLE_SELECT_LOADED:d?(0,_ui.getIcon)().TABLE_SELECT_OPEN:(0,_ui.getIcon)().TABLE_SELECT_CLOSE,value:u?(0,_ui.getI18n)("vxe.select.loadingText"):h},on:{clear:n.clearEvent,click:n.clickEvent,focus:n.focusEvent,blur:n.blurEvent,"suffix-click":n.togglePanelEvent},scopedSlots:O?{prefix:function(){return O({})}}:{}}),e("div",{ref:"refOptionPanel",class:["vxe-table--ignore-clear vxe-table-select--panel",b?_xeUtils.default.isFunction(b)?b({$tableSelect:n}):b:"",_defineProperty(_defineProperty(_defineProperty(_defineProperty({},"size--".concat(v),v),"is--transfer",g),"ani--leave",!u&&p),"ani--enter",!u&&d)],attrs:{placement:l.panelPlacement},style:l.panelStyle},s?[e("div",{class:"vxe-table-select--panel-wrapper"},[E?e("div",{class:"vxe-table-select--panel-header"},E({})):(0,_ui.renderEmptyElement)(n),e("div",{class:"vxe-table-select--panel-body"},[e("div",{ref:"refGridWrapper",class:"vxe-table-select-grid--wrapper",style:y},[t?e(t,{ref:"refGrid",class:"vxe-table-select--grid",props:Object.assign(Object.assign({},x),{rowConfig:_,data:r,columns:f.length?f:x.columns,height:"100%",autoResize:!0}),on:Object.assign(Object.assign({},n.gridEvents),{"radio-change":n.radioChangeEvent,"checkbox-change":n.checkboxChangeEvent,"checkbox-all":n.checkboxAllEvent}),scopedSlots:Object.assign({},a,{header:void 0,footer:void 0,prefixSlot:void 0})}):(0,_ui.renderEmptyElement)(n)])]),P?e("div",{class:"vxe-table-select--panel-footer"},P({})):(0,_ui.renderEmptyElement)(n)])]:[])])}},watch:{options:function(){this.cacheDataMap()},columns:function(e){this.loadTableColumn(e)},value:function(e){this.updateModel(e)}},created:function(){var n=this,e=n,i=n.gridEvents;["form-submit","form-reset","form-collapse","page-change"].forEach(function(t){i[(0,_vn.getOnName)(t)]=function(e){n.dispatchEvent(t,e,e.$event)}}),n.loadTableColumn(e.columns),n.cacheDataMap()},mounted:function(){var e=this,t=e,n=e.reactData,i=_ui.VxeUI.getComponent("vxe-grid"),t=(e.$nextTick(function(){i||(0,_log.errLog)("vxe.error.reqComp",["[table-select] vxe-grid"])}),t.gridConfig);t&&t.proxyConfig&&!1!==t.proxyConfig.autoLoad&&(n.initialized=!0),_ui.globalEvents.on(e,"mousewheel",e.handleGlobalMousewheelEvent),_ui.globalEvents.on(e,"mousedown",e.handleGlobalMousedownEvent),_ui.globalEvents.on(e,"blur",e.handleGlobalBlurEvent),_ui.globalEvents.on(e,"resize",e.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this,t=e.$refs.refOptionPanel;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)}});
|