Picker-C1ImhkEU.js 13 KB

1
  1. import{s as J,f as m,am as j,V as $,a3 as M,v as R,w as q,X as G,y as g,E as T,G as V,cq as Q,cJ as X,aC as x,ad as I,H as Y,K as H,aF as W,aJ as Z,aG as z,aH as U,ac as ee,ag as D,a9 as te,L,ae,z as b,P as k,Q as i,aX as ne,bk as ie,b8 as oe,az as se,aA as re,ah as K}from"./index-DT8qTvyx.js";var le=function(w){J(n,w);function n(e){var t=w.call(this,e)||this;t.state={isOpened:!1,schema:t.buildSchema(t.props),isFocused:!1},t.input=m.createRef(),t.toDispose=[],t.mounted=!1;var o=e.formInited,a=e.addHook,s=e.formItem,r=function(){return T(t,void 0,void 0,function(){var l=this;return V(this,function(p){switch(p.label){case 0:return[4,this.fetchOptions()];case 1:return p.sent(),this.mounted&&this.toDispose.push(oe(function(){return JSON.stringify(s==null?void 0:s.tmpValue)},function(){return l.fetchOptions()})),[2]}})})};return s&&t.toDispose.push(o||!a?s.addInitHook(r):a(r,"init")),t}return n.prototype.componentDidMount=function(){this.mounted=!0},n.prototype.componentDidUpdate=function(e){var t,o=this.props,a=["multiple","source","pickerSchema"];a.some(function(s){return!j(e[s],o[s])})?this.setState({schema:this.buildSchema(o)}):$(e.source,o.source,e.data,o.data)&&!((t=o.formItem)===null||t===void 0)&&t.inited&&this.fetchOptions()},n.prototype.componentWillUnmount=function(){this.toDispose.forEach(function(e){return e()}),this.toDispose=[],this.mounted=!1},n.prototype.fetchOptions=function(){var e,t=this.props,o=t.value,a=t.formItem,s=t.valueField,r=t.labelField,l=t.source,p=t.data,u;if(!(!l||!a||(s||"value")===(r||"label")||(u=a.getSelectedOptions(o))&&(!u.length||u[0][s||"value"]!==u[0][r||"label"]))){var f=M(p,(e={value:o},e[s||"value"]=o,e.op="loadOptions",e));if(R(l))a.setOptions(q(l,p,"| raw"));else if(G(l,f))return a.loadOptions(l,f,{autoAppend:!0})}},n.prototype.buildSchema=function(e){var t,o,a=R(e.source);return g(g({checkOnItemClick:!0,listItem:{title:"${".concat(e.labelField||"label","|raw}")}},e.pickerSchema),{labelTpl:(o=(t=e.pickerSchema)===null||t===void 0?void 0:t.labelTpl)!==null&&o!==void 0?o:e.labelTpl,type:"crud",pickerMode:!0,syncLocation:!1,filterCanAccessSuperData:!1,api:a?null:e.source,source:a?e.source:null,keepItemSelectionOnPageChange:!0,valueField:e.valueField,labelField:e.labelField,bulkActions:e.multiple?e.pickerSchema.bulkActions:[]})},n.prototype.crudRef=function(e){for(;e&&e.getWrappedInstance;)e=e.getWrappedInstance();this.crud=e},n.prototype.reload=function(){if(this.crud)this.crud.search();else{var e=this.props.reloadOptions;e&&e()}},n.prototype.open=function(){this.setState({isOpened:!0})},n.prototype.close=function(){this.setState({isOpened:!1})},n.prototype.handleModalConfirm=function(e,t,o,a){return T(this,void 0,void 0,function(){var s;return V(this,function(r){switch(r.label){case 0:return s=se(a,function(l){return l.props.type==="crud"}),[4,this.handleChange(e[s].items)];case 1:return r.sent(),this.close(),[2]}})})},n.prototype.handleChange=function(e){return T(this,void 0,void 0,function(){var t,o,a,s,r,l,p,u,f,h,v,d,c,C;return V(this,function(O){switch(O.label){case 0:return t=this.props,o=t.joinValues,a=t.valueField,s=t.delimiter,r=t.extractValue,l=t.multiple,p=t.options,t.data,u=t.dispatchEvent,t.selectedOptions,f=t.setOptions,h=t.onChange,v=e,o?v=e.map(function(y){return y[a||"value"]}).join(s||","):r?v=l?e.map(function(y){return y[a||"value"]}):e[0]&&e[0][a||"value"]||"":v=l?e:e[0],d=[],e.forEach(function(y){re(p,function(_){return y[a||"value"]==_[a||"value"]})||d.push(y)}),d.length&&f(p.concat(d)),c=l?e:e[0],[4,u("change",K(this.props,{value:v,option:c,selectedItems:c}))];case 1:return C=O.sent(),C!=null&&C.prevented?[2]:(h(v),[2])}})})},n.prototype.handleItemClick=function(e){return T(this,void 0,void 0,function(){var t,o,a,s;return V(this,function(r){switch(r.label){case 0:return t=this.props,o=t.data,a=t.dispatchEvent,[4,a("itemClick",M(o,{item:e}))];case 1:return s=r.sent(),s!=null&&s.prevented?[2]:[2]}})})},n.prototype.removeItem=function(e){return T(this,void 0,void 0,function(){var t,o,a,s,r,l,p,u,f,h,v,d,c,C;return V(this,function(O){switch(O.label){case 0:return t=this.props,o=t.selectedOptions,a=t.joinValues,s=t.extractValue,r=t.delimiter,l=t.valueField,p=t.onChange,u=t.multiple,f=t.dispatchEvent,h=o.concat(),v=U(h.splice(e,1),1),d=v[0],c=h,a?c=h.map(function(y){return y[l||"value"]}).join(r||","):s?c=u?h.map(function(y){return y[l||"value"]}):h[0]&&h[0][l||"value"]||"":c=u?h:h[0],[4,f("change",K(this.props,{value:c,option:d,selectedItems:d}))];case 1:return C=O.sent(),C!=null&&C.prevented?[2]:(p(c),[2])}})})},n.prototype.handleKeyDown=function(e){var t=this.props.selectedOptions;e.key===" "?(this.open(),e.preventDefault()):t.length&&e.key=="Backspace"&&this.removeItem(t.length-1)},n.prototype.handleFocus=function(){this.setState({isFocused:!0})},n.prototype.handleBlur=function(){this.setState({isFocused:!1})},n.prototype.handleClick=function(){this.input.current&&this.input.current.focus(),this.open()},n.prototype.clearValue=function(){var e=this.props,t=e.onChange,o=e.resetValue;t(o!==void 0?o:"")},n.prototype.getOverflowConfig=function(){var e=this.props.overflowConfig;return Q(n.defaultProps.overflowConfig,e)},n.prototype.handleSelect=function(e,t){var o=this.props,a=o.selectedOptions,s=o.valueField;if(!(!Array.isArray(e)||!Array.isArray(t)||!e.length&&!t.length)){var r=X(e,a,function(l,p){var u=l[s||"value"],f=p[s||"value"];return u||f?u===f:j(x(l,"value"),x(p,"value"))});r.length===e.length&&r.length===a.length||this.handleChange(e)}},n.prototype.renderTag=function(e,t){var o=this,a=this.props,s=a.classPrefix,r=a.classnames,l=a.labelField,p=a.labelTpl;a.translate;var u=a.disabled,f=a.env,h=a.id,v=a.themeCss,d=a.css;return m.createElement("div",{key:t,className:r("".concat(s,"Picker-value"),I(g(g({},this.props),{name:"pickValueWrapClassName",id:h,themeCss:v||d})),{"is-disabled":u})},m.createElement("span",{className:r("".concat(s,"Picker-valueIcon"),I(g(g({},this.props),{name:"pickValueIconClassName",id:h,themeCss:v||d}))),onClick:function(c){c.stopPropagation(),o.removeItem(t)}},"×"),m.createElement("span",{className:r("".concat(s,"Picker-valueLabel"),I(g(g({},this.props),{name:"pickFontClassName",id:h,themeCss:v||d}))),onClick:function(c){c.stopPropagation(),o.handleItemClick(e)}},p?m.createElement(Y,{html:H(p,e),filterHtml:f.filterHtml}):"".concat(W(e,l||"label")||W(e,"id"))))},n.prototype.renderValues=function(){var e=this,t=this.props,o=t.classPrefix,a=t.selectedOptions,s=t.translate,r=t.disabled,l=t.multiple,p=t.popOverContainer,u=t.id,f=t.themeCss,h=t.css,v=this.getOverflowConfig(),d=v.maxTagCount,c=v.overflowTagPopover,C=a.length,O=a,y=l!==!1&&Z(d,{start:0,end:C,left:"inclusive",right:"exclusive"});return y&&(O=z(z([],U(a.slice(0,d)),!1),[{label:"+ ".concat(C-d," ..."),value:"__overflow_tag__"}],!1)),m.createElement("div",{className:"".concat(o,"Picker-values")},O.map(function(_,P){return y&&P===d?m.createElement(ee,{key:P,container:p,tooltip:g(g({tooltipClassName:D("Picker-overflow",c==null?void 0:c.tooltipClassName),title:s("已选项")},x(c,["children","content","tooltipClassName"])),{children:function(){return m.createElement("div",{className:D("".concat(o,"Picker-overflow-wrapper"))},a.slice(d,C).map(function(S,N){var E=N+d;return e.renderTag(S,E)}))}})},m.createElement("div",{key:P,className:D("".concat(o,"Picker-value"),{"is-disabled":r})},m.createElement("span",{className:"".concat(o,"Picker-valueLabel ").concat(I(g(g({},e.props),{name:"pickFontClassName",id:u,themeCss:f||h})))},_.label))):e.renderTag(_,P)}))},n.prototype.renderBody=function(e){var t=e===void 0?{}:e,o=t.popOverContainer,a=this.props,s=a.render,r=a.selectedOptions,l=a.options,p=a.multiple,u=a.valueField,f=a.embed,h=a.source,v=a.strictMode,d=a.testIdBuilder,c=this.getOverflowConfig(),C=c.maxTagCount,O=c.overflowTagPopoverInCRUD,y=c.displayPosition;return s("modal-body",this.state.schema,g({value:r,valueField:u,primaryField:u,options:h?[]:l,multiple:p,strictMode:v,onSelect:f?this.handleSelect:void 0,testIdBuilder:d==null?void 0:d.getChild("body-schema"),ref:this.crudRef,popOverContainer:o},f||Array.isArray(y)&&y.includes("crud")?{maxTagCount:C,overflowTagPopover:O}:{}))},n.prototype.render=function(){var e=this.props,t=e.className;e.style;var o=e.modalClassName,a=e.classnames,s=e.disabled,r=e.render,l=e.modalMode,p=e.source,u=e.size,f=e.clearable,h=e.multiple,v=e.placeholder,d=e.embed,c=e.selectedOptions,C=e.translate,O=e.popOverContainer,y=e.modalTitle,_=e.data,P=e.mobileUI,S=e.env,N=e.themeCss,E=e.css,A=e.id,B=e.classPrefix,F=e.testIdBuilder;return m.createElement("div",{className:a("PickerControl",{"is-mobile":P},t)},d?m.createElement("div",{className:a("Picker")},this.renderBody({popOverContainer:O})):m.createElement("div",{className:a("Picker",{"Picker--single":!h,"Picker--multi":h,"is-focused":this.state.isFocused,"is-disabled":s})},m.createElement("div",{onClick:this.handleClick,className:a("Picker-input",s&&"is-disabled",this.state.isFocused&&"is-focused",I(g(g({},this.props),{name:"pickControlClassName",id:A,themeCss:N||E})))},!c.length&&v?m.createElement("div",{className:a("Picker-placeholder")},C(v)):null,m.createElement("div",g({className:a("Picker-valueWrap")},F==null?void 0:F.getTestId()),this.renderValues(),m.createElement("input",{onChange:te,value:"",ref:this.input,onKeyDown:this.handleKeyDown,onFocus:this.handleFocus,onBlur:this.handleBlur,readOnly:P})),f&&!s&&c.length?m.createElement("a",{onClick:this.clearValue,className:a("Picker-clear")},m.createElement(L,{icon:"input-clear",className:"icon"})):null,m.createElement("span",g({onClick:this.open,className:a("Picker-btn")},F==null?void 0:F.getChild("picker-open-btn").getTestId()),m.createElement(L,{icon:"window-restore",className:a("icon",I(g(g({},this.props),{name:"pickIconClassName",id:A,themeCss:N||E}))),iconContent:"Picker-icon"}))),r("modal",{title:y&&typeof y=="string"?H(y,_):C("Select.placeholder"),size:u,type:l,className:o,body:{children:this.renderBody},testIdBuilder:F==null?void 0:F.getChild("modal")},{key:"modal",lazyRender:!!p,onConfirm:this.handleModalConfirm,onClose:this.close,show:this.state.isOpened})),m.createElement(ae,g({},this.props,{config:{themeCss:N||E,classNames:[{key:"pickControlClassName",weights:{default:{important:!0},hover:{important:!0},focused:{important:!0,parent:".".concat(B,"Picker.is-focused >")},disabled:{important:!0,parent:".".concat(B,"Picker.is-disabled >")}}},{key:"pickFontClassName"},{key:"pickValueWrapClassName",weights:{default:{important:!0}}},{key:"pickValueIconClassName",weights:{default:{important:!0},hover:{important:!0}}},{key:"pickIconClassName",weights:{default:{suf:" svg"}}}],id:A},env:S})))},n.propsList=["modalTitle","modalMode","pickerSchema","labelField","onChange","options","value","inline","multiple","embed","resetValue","placeholder","onQuery"],n.defaultProps={modalMode:"dialog",multiple:!1,placeholder:"Picker.placeholder",labelField:"label",valueField:"value",pickerSchema:{mode:"list"},embed:!1,overflowConfig:{maxTagCount:-1,displayPosition:["select","crud"],overflowTagPopover:{placement:"top",trigger:"hover",showArrow:!1,offset:[0,-10]},overflowTagPopoverInCRUD:{placement:"bottom",trigger:"hover",showArrow:!1,offset:[0,10]}}},b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",Object)],n.prototype,"fetchOptions",null),b([k,i("design:type",Function),i("design:paramtypes",[Object]),i("design:returntype",void 0)],n.prototype,"crudRef",null),b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"open",null),b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"close",null),b([k,i("design:type",Function),i("design:paramtypes",[Array,Object,Object,Array]),i("design:returntype",Promise)],n.prototype,"handleModalConfirm",null),b([k,i("design:type",Function),i("design:paramtypes",[Array]),i("design:returntype",Promise)],n.prototype,"handleChange",null),b([k,i("design:type",Function),i("design:paramtypes",[Object]),i("design:returntype",Promise)],n.prototype,"handleItemClick",null),b([k,i("design:type",Function),i("design:paramtypes",[Object]),i("design:returntype",void 0)],n.prototype,"handleKeyDown",null),b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"handleFocus",null),b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"handleBlur",null),b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"handleClick",null),b([k,i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"clearValue",null),b([k,i("design:type",Function),i("design:paramtypes",[Array,Array]),i("design:returntype",void 0)],n.prototype,"handleSelect",null),b([k,i("design:type",Function),i("design:paramtypes",[Object]),i("design:returntype",void 0)],n.prototype,"renderBody",null),b([ne(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],n.prototype,"render",null),n}(m.PureComponent),de=function(w){J(n,w);function n(){return w!==null&&w.apply(this,arguments)||this}return n=b([ie({type:"picker",autoLoadOptionsFromSource:!1,sizeMutable:!1})],n),n}(le);export{de as PickerControlRenderer,le as default};