@nocobase/client-v2 2.2.39 → 2.2.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/index.mjs CHANGED
@@ -885,7 +885,7 @@ if (!ctx.record) {
885
885
  text-overflow: ellipsis;
886
886
  white-space: nowrap !important;
887
887
  }
888
- `,u6=e=>{var t,l;let{fieldNames:o,value:n,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,_=(0,f.useFlowModel)(),x=uL(o,null==_||null==(l=_.context)||null==(t=l.collectionField)?void 0:t.targetCollection),M=!!(r&&a),w=!!(s&&M),S=u$(d,n,M),k=(0,i.useRef)();k.current||(k.current=_.__keepOpenOnSelectRuntime||(_.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let F=k.current,[C,A]=(0,i.useState)(F.open),P=e=>{Object.assign(F,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(F.open)},T=!!_.context.flowSettingsEnabled,{t:j}=(0,v.useTranslation)();uB({model:_,value:n,isMultiple:M,fieldNames:x,onChange:c});let I=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:j("Add")+` “${t}” `})]})},L=u8(_,h);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...y,className:[u4,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:x,options:S,value:uq(n,x,M),mode:M?"multiple":void 0,open:w?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;w&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(w){if(!e&&F.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}u1(_,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{w&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uH,{option:t,fieldNames:x})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u3,children:e.label}),dropdownRender:e=>{let t=S.some(e=>e[x.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===S.length&&y.searchText)&&e,S.length>0&&y.searchText&&!t&&(0,m.jsx)(b.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(I,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,children:j("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:_.collectionField.targetCollection,message:L,children:(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:j("Add new")})}))]})};class u9 extends uP{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uL(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uQ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u6,{...this.props})}}let u7={page:1,pageSize:40,loading:!1,hasMore:!0},ce=e=>`__search__${e}`,ct=e=>`__assoc__${e}`;async function cl(e,t){try{var l,o,n,i;let t=e.model.collectionField.targetCollection,r=uL(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d=(null==s||null==(n=s.filterable)||null==(o=n.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(i=e.inputArgs.searchText)?void 0:i.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(ce(r)):(c.setPage(1),c.addFilterGroup(ce(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u9.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=ce(uL(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u7.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u9.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uL(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,n=e.model.resource,i=e.model.getDataSource();n.setPage(1),await e.model.applyFlow("selectSettings"),await n.refresh();let{count:r}=n.getMeta(),a=n.getData();(!i||r!==i.length||a[0][o]!==i[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++))}}}}),u9.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:n,clientHeight:i}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+i<n-20)&&!u7.loading&&u7.hasMore){u7.loading=!0;try{let t=e.model.resource;t.setPage(u7.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u7.pageSize?(u7.hasMore=!1,u7.page=1):u7.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u7.loading=!1}}}}}});let co=(0,g.debounce)(cl,500);u9.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:co}}}),u9.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let n=e.createResource(f.MultiRecordResource),i=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=i;n.setDataSourceKey(a),n.setResourceName(r),n.setPageSize(u7.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(i.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==i?void 0:i.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&n.addFilterGroup(ct(s),{$or:m}),e.model.resource=n}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u9.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uZ(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u9.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,n;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:i,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(i(["m2m","o2m"].includes(null==(n=e.collectionField)?void 0:n.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u9.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,n,i,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(n=p.getFilterByTK)?void 0:n.call(p,h):void 0,g=null==(i=e.collectionField)?void 0:i.resourceName,v=uR(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},...g&&null==f?{sourceAssociationName:g}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u5,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u9.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class cn extends u9{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}cn.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,n="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:n,multiple:n})}}}}),cn.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var ci=__webpack_require__(6832);class cr extends uA{render(){return(0,m.jsx)(ci.DateFilterDynamicComponent,{...this.props})}}let ca=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:n,...i}=e,r={...i,value:t,format:l,picker:o,showTime:n};return(0,m.jsx)(ci.DateFilterDynamicComponent,{...r})};class cs extends cr{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:n="date",...i}=e,r=o&&"date"===n?"YYYY-MM-DD":l;return(0,m.jsx)(ci.DateFilterDynamicComponent,{...i,value:t,format:r,picker:n,showTime:o})};class cu extends cr{render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cc=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:n,...i}=e,r=n&&"date"===o?"YYYY-MM-DD":l,a={...i,value:t,format:r,picker:o,showTime:n};return(0,m.jsx)(ci.DateFilterDynamicComponent,{...a})};class cp extends cr{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cc,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cm="recordSelectDataSourceKey",ch="recordSelectTargetCollection",cf="recordSelectTitleField",cg="recordSelectValueField",cv="allowMultiple",cy="multiple",c_="valueMode",cb=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),cx=e=>{var t,l,o,n,r;let{fieldModel:a,source:s=[]}=e,d=(0,lj.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),_=(0,et.Sx)(y),x=(0,i.useCallback)(e=>(0,et.w6)(e,y),[y]),M=()=>d.value||{},w=(e,t)=>{d.setValue({...M(),[e]:t})},S=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},k=e=>{var t,l,o,n;let i=`${d.path.toString()}.${e}`,r=null==(n=d.form)||null==(o=n.query)||null==(l=o.call(n,i))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},F=e=>{let t=k(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,i.useEffect)(()=>{var e,t,l,o,n,i,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cm])||(null==(n=m[0])?void 0:n.key)||"main",y=(u?a.slice(1):a).join("."),_=h.dataSourceManager.getCollectionField(`${v}.${y}`),b=f.FilterableItemModel.getDefaultBindingByField(g.model.context,_);if(!_&&"FilterFormCustomRecordSelectFieldModel"!==p||!b&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let x=(null==_||null==(i=_.getComponentProps)?void 0:i.call(_))||{},w={...(b&&"function"==typeof b.defaultProps?b.defaultProps(g.model.context,d):null==b?void 0:b.defaultProps)||{},...x,...M()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==_?void 0:_.target))&&(null==_?void 0:_.target)){let e=_.targetCollection||h.dataSourceManager.getCollection(_.dataSourceKey,_.target);w[cm]=_.dataSourceKey||v,w[ch]=_.target,w[cf]=_.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||w[cf],w[cg]=w[cg]||(null==e?void 0:e.filterTargetKey)||"id",void 0===w[cv]&&void 0===w[cy]&&(w[cv]=!0,w[cy]=!0),w[c_]||(w[c_]="value")}S(w)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,i.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,i.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cm])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(n=h.dataSourceManager)||null==(o=n.getDataSource)?void 0:o.call(n,P):void 0,j=null==c?void 0:c[ch],I=j?null==T||null==(r=T.getCollection)?void 0:r.call(T,j):void 0,L=(0,i.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),R=(0,i.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:L(e.title)||e.name,value:e.name})):[],[T,L]),D=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{if(!_)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(x(null==t?void 0:t.interface))};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]),E=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(_){let e=x(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cb.has(o)};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]);if((0,i.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!j||(null==c?void 0:c[cf]))return;let t=null==I||null==(e=I.titleCollectionField)?void 0:e.name;t&&d.setValue({...M(),[cf]:t})},[a,p,j,I,c]),(0,i.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!j)return;let e=null==c?void 0:c[cg],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==I?void 0:I.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({...M(),[cg]:o})},[a,p,j,I,c,E]),(0,i.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cv])===void 0&&(null==c?void 0:c[cy])===void 0&&d.setValue({...M(),[cv]:!0,[cy]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Date format"),children:(0,m.jsxs)(b.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>w("format",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(b.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(b.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(il.FormItem,{label:u("Time"),children:(0,m.jsx)(b.Checkbox,{checked:c.showTime,onChange:e=>w("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(il.FormItem,{label:u("Date range"),children:(0,m.jsx)(b.Checkbox,{checked:c.isRange,onChange:e=>w("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Mode"),children:(0,m.jsxs)(b.Radio.Group,{value:c.mode||"",onChange:e=>w("mode",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(b.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(il.FormItem,{label:u("Data source"),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cm]:e,[ch]:void 0,[cf]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Target collection"),asterisk:!0,...F(ch),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:j,options:R,onChange:e=>{d.setValue({...c,[ch]:e,[cf]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Title field"),asterisk:!0,...F(cf),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cf],options:D,onChange:e=>w(cf,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(il.FormItem,{label:u("Value field"),asterisk:!0,...F(cg),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cg],options:E,onChange:e=>w(cg,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(il.FormItem,{label:u("Multiple"),children:(0,m.jsx)(b.Checkbox,{checked:(null==c?void 0:c[cv])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cv]:t,[cy]:t})},children:u("Allow multiple selection")})})]}):null};function cM(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),n=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,i.useRef)(),d=(0,i.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,i.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(n.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,i.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(il.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cw={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},cS=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),ck={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cF={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cC={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function cA(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cw[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cP(e){var t,l,o,n;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(i)||0===i.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,i[0])),s=a?i[0]:r||"main",d=(a?i.slice(1):i).join(".");if(d)return null==e||null==(n=e.dataSourceManager)||null==(o=n.getCollectionField)?void 0:o.call(n,`${s}.${d}`)}function cT(e){var t,l,o,n;let i;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{i=null==(n=e.getInterfaceOptions)||null==(o=n.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){i=void 0}return Array.isArray(i)&&i.length>0?i:e.interface&&cC[e.interface]?cC[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cj(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cI(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cL(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>cS.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),n=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),i=n||t,r=n||l,a=[];return i&&a.push(ck),r&&a.push(cF),cI([...a,...o])}function cR(e){var t,l,o,n,i;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cP(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(n=p.getPrimaryKey)?void 0:n.call(p));if(m)return null==(i=p.getField)?void 0:i.call(p,m)}function cD(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,n=cR(t,l,o),i=cT(n);return{operatorList:cj(l)?cL(i):i,meta:n}}function cE(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:n=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cD(e);let i=cP(t,n);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&i){let e=cT(i);return{operatorList:a0(i)?cA(l,o):cL(e),meta:i}}let r=cA(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cT(i),meta:i}}function cY(e){let{operatorList:t,meta:l}=cE(e);return cI((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cN(e){var t,l;let{fieldModel:o,fieldModelProps:n={}}=e,i=cY(e);if("DateTimeFilterFieldModel"===o&&(null==n?void 0:n.isRange)){let e=i.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=i.find(e=>e.selected))?void 0:t.value)||(null==(l=i[0])?void 0:l.value)}function cO(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cB=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:n={},value:r,onChange:a,...s}=e,d=(0,lj.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:n,y=Array.isArray(g)?g.join("."):"",_=null==v?void 0:v.mode,b=null==v?void 0:v.allowMultiple,x=null==v?void 0:v.multiple,M=null==v?void 0:v.recordSelectDataSourceKey,w=null==v?void 0:v.recordSelectTargetCollection,S=null==v?void 0:v.recordSelectValueField,k=(0,i.useMemo)(()=>cY({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,_,b,x,M,w,S]),F=(0,i.useMemo)(()=>cO(k,e=>c.t(e)),[k,c]);return(0,i.useEffect)(()=>{if(!F.length){void 0!==r&&(null==a||a(void 0));return}if(F.some(e=>e.value===r))return;let e=cN({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,F,y,r,_,b,x,M,w,S]),(0,m.jsx)(il.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:F,value:r,onChange:a,disabled:0===F.length})});class cV extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[n,i]=t,r={key:n,label:e.t(i.meta.label),sort:i.meta.sort??999,searchable:!!(null==(l=i.meta)?void 0:l.searchable),searchPlaceholder:null==(o=i.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:n},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cH(e){let t=(0,f.useFlowEngine)(),l=(0,i.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,n]=(0,i.useState)(()=>l());(0,i.useEffect)(()=>{n(l())},[l]);let r=(0,i.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let i=null==t?void 0:t.dataSourceManager;if(!i)return;let r=[];if(1===e.length){let e=o.value,t=i.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=i.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,n(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),n=null==o?void 0:o.targetCollection;r=((null==n?void 0:n.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,n(e=>[...e])},[t]);return(0,m.jsx)(b.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cV.renderMode=f.ModelRenderMode.RenderFunction,cV.define({hide:!0,label:(0,f.tExpr)("Others")});var cq=__webpack_require__(6175);let c$=(e,t,l)=>{var o,n,i;if((null==l||null==(n=l.form)||null==(o=n.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(i=l.t)?void 0:i.call(l,"The field value is required"))||"The field value is required"};class cz extends cV{buildRecordSelectCollectionField(e,t){var l,o,n,i,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(n=u.getCollection)?void 0:n.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(i=c.titleCollectionField)?void 0:i.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let n=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),i=this.getCurrentOperatorMeta(),r=(0,cq.S)(this.operator,n);return(null==i?void 0:i.noValue)&&!Array.isArray(null==i||null==(o=i.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},n=cY({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),i=this.operator||e.operator;return i&&n.find(e=>e.value===i)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cz.define({label:'{{t("Custom field")}}',sort:1}),cz.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cH,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":cM,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":cx,properties:{recordSelectTargetCollection:{type:"string","x-validator":c$},recordSelectTitleField:{type:"string","x-validator":c$},recordSelectValueField:{type:"string","x-validator":c$}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cB,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,I.uid)().slice(0,4)}`}),handler(e,t){var l,o;let n,{fieldModel:i,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===i){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},n=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||n.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=n.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:i,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===i){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}n&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:n});let p=!!cY({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cN({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let cU="__filter_form_value_options__",cK=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cG=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cW=(e,t,l,o,n,i)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],n=null==e?void 0:e[l];null!=t&&null!=n&&r.set(t,n)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let n=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return n;let a=r.get(n);return null!=a?a:cG(n,i)}if(o===l)return e;let t=r.get(e);return null!=t?t:cG(e,i)};return(n&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cK(e,i))},cJ=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cX=(e,t)=>{var l,o;let n=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==n?void 0:n.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==n?void 0:n.name)||e.fieldPath,u=(0,i.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll("&gt;",">"):null},cQ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:n,allowMultiple:i,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(n&&i),g=u$(r,o,h),y=(0,f.useFlowModel)(),_=!!y.context.flowSettingsEnabled,{t:x}=(0,v.useTranslation)(),M=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:x("Add")+` “${t}” `})]})},w=cX(y,u);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uq(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uH,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
888
+ `,u6=e=>{var t,l;let{fieldNames:o,value:n,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,_=(0,f.useFlowModel)(),x=uL(o,null==_||null==(l=_.context)||null==(t=l.collectionField)?void 0:t.targetCollection),M=!!(r&&a),w=!!(s&&M),S=u$(d,n,M),k=(0,i.useRef)();k.current||(k.current=_.__keepOpenOnSelectRuntime||(_.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let F=k.current,[C,A]=(0,i.useState)(F.open),P=e=>{Object.assign(F,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(F.open)},T=!!_.context.flowSettingsEnabled,{t:j}=(0,v.useTranslation)();uB({model:_,value:n,isMultiple:M,fieldNames:x,onChange:c});let I=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:j("Add")+` “${t}” `})]})},L=u8(_,h);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...y,className:[u4,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:x,options:S,value:uq(n,x,M),mode:M?"multiple":void 0,open:w?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;w&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(w){if(!e&&F.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}u1(_,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{w&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uH,{option:t,fieldNames:x})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u3,children:e.label}),dropdownRender:e=>{let t=S.some(e=>e[x.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===S.length&&y.searchText)&&e,S.length>0&&y.searchText&&!t&&(0,m.jsx)(b.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(I,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,children:j("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:_.collectionField.targetCollection,message:L,children:(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:j("Add new")})}))]})};class u9 extends uP{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uL(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uQ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u6,{...this.props})}}let u7={page:1,pageSize:40,loading:!1,hasMore:!0},ce=e=>`__search__${e}`,ct=e=>`__assoc__${e}`;async function cl(e,t){try{var l,o,n,i;let t=e.model.collectionField.targetCollection,r=uL(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d="string"===a.type||"string"===a.dataType?"$includes":(null==s||null==(n=s.filterable)||null==(o=n.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(i=e.inputArgs.searchText)?void 0:i.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(ce(r)):(c.setPage(1),c.addFilterGroup(ce(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u9.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=ce(uL(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u7.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u9.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uL(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,n=e.model.resource,i=e.model.getDataSource();n.setPage(1),await e.model.applyFlow("selectSettings"),await n.refresh();let{count:r}=n.getMeta(),a=n.getData();(!i||r!==i.length||a[0][o]!==i[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++))}}}}),u9.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:n,clientHeight:i}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+i<n-20)&&!u7.loading&&u7.hasMore){u7.loading=!0;try{let t=e.model.resource;t.setPage(u7.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u7.pageSize?(u7.hasMore=!1,u7.page=1):u7.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u7.loading=!1}}}}}});let co=(0,g.debounce)(cl,500);u9.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:co}}}),u9.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let n=e.createResource(f.MultiRecordResource),i=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=i;n.setDataSourceKey(a),n.setResourceName(r),n.setPageSize(u7.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(i.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==i?void 0:i.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&n.addFilterGroup(ct(s),{$or:m}),e.model.resource=n}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u9.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uZ(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u9.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,n;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:i,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(i(["m2m","o2m"].includes(null==(n=e.collectionField)?void 0:n.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u9.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,n,i,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(n=p.getFilterByTK)?void 0:n.call(p,h):void 0,g=null==(i=e.collectionField)?void 0:i.resourceName,v=uR(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},...g&&null==f?{sourceAssociationName:g}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u5,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u9.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class cn extends u9{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}cn.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,n="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:n,multiple:n})}}}}),cn.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var ci=__webpack_require__(6832);class cr extends uA{render(){return(0,m.jsx)(ci.DateFilterDynamicComponent,{...this.props})}}let ca=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:n,...i}=e,r={...i,value:t,format:l,picker:o,showTime:n};return(0,m.jsx)(ci.DateFilterDynamicComponent,{...r})};class cs extends cr{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:n="date",...i}=e,r=o&&"date"===n?"YYYY-MM-DD":l;return(0,m.jsx)(ci.DateFilterDynamicComponent,{...i,value:t,format:r,picker:n,showTime:o})};class cu extends cr{render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cc=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:n,...i}=e,r=n&&"date"===o?"YYYY-MM-DD":l,a={...i,value:t,format:r,picker:o,showTime:n};return(0,m.jsx)(ci.DateFilterDynamicComponent,{...a})};class cp extends cr{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cc,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cm="recordSelectDataSourceKey",ch="recordSelectTargetCollection",cf="recordSelectTitleField",cg="recordSelectValueField",cv="allowMultiple",cy="multiple",c_="valueMode",cb=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),cx=e=>{var t,l,o,n,r;let{fieldModel:a,source:s=[]}=e,d=(0,lj.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),_=(0,et.Sx)(y),x=(0,i.useCallback)(e=>(0,et.w6)(e,y),[y]),M=()=>d.value||{},w=(e,t)=>{d.setValue({...M(),[e]:t})},S=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},k=e=>{var t,l,o,n;let i=`${d.path.toString()}.${e}`,r=null==(n=d.form)||null==(o=n.query)||null==(l=o.call(n,i))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},F=e=>{let t=k(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,i.useEffect)(()=>{var e,t,l,o,n,i,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cm])||(null==(n=m[0])?void 0:n.key)||"main",y=(u?a.slice(1):a).join("."),_=h.dataSourceManager.getCollectionField(`${v}.${y}`),b=f.FilterableItemModel.getDefaultBindingByField(g.model.context,_);if(!_&&"FilterFormCustomRecordSelectFieldModel"!==p||!b&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let x=(null==_||null==(i=_.getComponentProps)?void 0:i.call(_))||{},w={...(b&&"function"==typeof b.defaultProps?b.defaultProps(g.model.context,d):null==b?void 0:b.defaultProps)||{},...x,...M()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==_?void 0:_.target))&&(null==_?void 0:_.target)){let e=_.targetCollection||h.dataSourceManager.getCollection(_.dataSourceKey,_.target);w[cm]=_.dataSourceKey||v,w[ch]=_.target,w[cf]=_.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||w[cf],w[cg]=w[cg]||(null==e?void 0:e.filterTargetKey)||"id",void 0===w[cv]&&void 0===w[cy]&&(w[cv]=!0,w[cy]=!0),w[c_]||(w[c_]="value")}S(w)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,i.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,i.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cm])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(n=h.dataSourceManager)||null==(o=n.getDataSource)?void 0:o.call(n,P):void 0,j=null==c?void 0:c[ch],I=j?null==T||null==(r=T.getCollection)?void 0:r.call(T,j):void 0,L=(0,i.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),R=(0,i.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:L(e.title)||e.name,value:e.name})):[],[T,L]),D=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{if(!_)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(x(null==t?void 0:t.interface))};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]),E=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(_){let e=x(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cb.has(o)};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]);if((0,i.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!j||(null==c?void 0:c[cf]))return;let t=null==I||null==(e=I.titleCollectionField)?void 0:e.name;t&&d.setValue({...M(),[cf]:t})},[a,p,j,I,c]),(0,i.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!j)return;let e=null==c?void 0:c[cg],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==I?void 0:I.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({...M(),[cg]:o})},[a,p,j,I,c,E]),(0,i.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cv])===void 0&&(null==c?void 0:c[cy])===void 0&&d.setValue({...M(),[cv]:!0,[cy]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Date format"),children:(0,m.jsxs)(b.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>w("format",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(b.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(b.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(il.FormItem,{label:u("Time"),children:(0,m.jsx)(b.Checkbox,{checked:c.showTime,onChange:e=>w("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(il.FormItem,{label:u("Date range"),children:(0,m.jsx)(b.Checkbox,{checked:c.isRange,onChange:e=>w("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Mode"),children:(0,m.jsxs)(b.Radio.Group,{value:c.mode||"",onChange:e=>w("mode",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(b.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(il.FormItem,{label:u("Data source"),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cm]:e,[ch]:void 0,[cf]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Target collection"),asterisk:!0,...F(ch),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:j,options:R,onChange:e=>{d.setValue({...c,[ch]:e,[cf]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Title field"),asterisk:!0,...F(cf),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cf],options:D,onChange:e=>w(cf,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(il.FormItem,{label:u("Value field"),asterisk:!0,...F(cg),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cg],options:E,onChange:e=>w(cg,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(il.FormItem,{label:u("Multiple"),children:(0,m.jsx)(b.Checkbox,{checked:(null==c?void 0:c[cv])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cv]:t,[cy]:t})},children:u("Allow multiple selection")})})]}):null};function cM(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),n=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,i.useRef)(),d=(0,i.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,i.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(n.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,i.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(il.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cw={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},cS=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),ck={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cF={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cC={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function cA(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cw[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cP(e){var t,l,o,n;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(i)||0===i.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,i[0])),s=a?i[0]:r||"main",d=(a?i.slice(1):i).join(".");if(d)return null==e||null==(n=e.dataSourceManager)||null==(o=n.getCollectionField)?void 0:o.call(n,`${s}.${d}`)}function cT(e){var t,l,o,n;let i;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{i=null==(n=e.getInterfaceOptions)||null==(o=n.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){i=void 0}return Array.isArray(i)&&i.length>0?i:e.interface&&cC[e.interface]?cC[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cj(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cI(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cL(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>cS.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),n=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),i=n||t,r=n||l,a=[];return i&&a.push(ck),r&&a.push(cF),cI([...a,...o])}function cR(e){var t,l,o,n,i;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cP(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(n=p.getPrimaryKey)?void 0:n.call(p));if(m)return null==(i=p.getField)?void 0:i.call(p,m)}function cD(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,n=cR(t,l,o),i=cT(n);return{operatorList:cj(l)?cL(i):i,meta:n}}function cE(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:n=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cD(e);let i=cP(t,n);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&i){let e=cT(i);return{operatorList:a0(i)?cA(l,o):cL(e),meta:i}}let r=cA(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cT(i),meta:i}}function cY(e){let{operatorList:t,meta:l}=cE(e);return cI((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cN(e){var t,l;let{fieldModel:o,fieldModelProps:n={}}=e,i=cY(e);if("DateTimeFilterFieldModel"===o&&(null==n?void 0:n.isRange)){let e=i.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=i.find(e=>e.selected))?void 0:t.value)||(null==(l=i[0])?void 0:l.value)}function cO(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cB=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:n={},value:r,onChange:a,...s}=e,d=(0,lj.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:n,y=Array.isArray(g)?g.join("."):"",_=null==v?void 0:v.mode,b=null==v?void 0:v.allowMultiple,x=null==v?void 0:v.multiple,M=null==v?void 0:v.recordSelectDataSourceKey,w=null==v?void 0:v.recordSelectTargetCollection,S=null==v?void 0:v.recordSelectValueField,k=(0,i.useMemo)(()=>cY({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,_,b,x,M,w,S]),F=(0,i.useMemo)(()=>cO(k,e=>c.t(e)),[k,c]);return(0,i.useEffect)(()=>{if(!F.length){void 0!==r&&(null==a||a(void 0));return}if(F.some(e=>e.value===r))return;let e=cN({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,F,y,r,_,b,x,M,w,S]),(0,m.jsx)(il.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:F,value:r,onChange:a,disabled:0===F.length})});class cV extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[n,i]=t,r={key:n,label:e.t(i.meta.label),sort:i.meta.sort??999,searchable:!!(null==(l=i.meta)?void 0:l.searchable),searchPlaceholder:null==(o=i.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:n},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cH(e){let t=(0,f.useFlowEngine)(),l=(0,i.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,n]=(0,i.useState)(()=>l());(0,i.useEffect)(()=>{n(l())},[l]);let r=(0,i.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let i=null==t?void 0:t.dataSourceManager;if(!i)return;let r=[];if(1===e.length){let e=o.value,t=i.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=i.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,n(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),n=null==o?void 0:o.targetCollection;r=((null==n?void 0:n.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,n(e=>[...e])},[t]);return(0,m.jsx)(b.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cV.renderMode=f.ModelRenderMode.RenderFunction,cV.define({hide:!0,label:(0,f.tExpr)("Others")});var cq=__webpack_require__(6175);let c$=(e,t,l)=>{var o,n,i;if((null==l||null==(n=l.form)||null==(o=n.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(i=l.t)?void 0:i.call(l,"The field value is required"))||"The field value is required"};class cz extends cV{buildRecordSelectCollectionField(e,t){var l,o,n,i,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(n=u.getCollection)?void 0:n.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(i=c.titleCollectionField)?void 0:i.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let n=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),i=this.getCurrentOperatorMeta(),r=(0,cq.S)(this.operator,n);return(null==i?void 0:i.noValue)&&!Array.isArray(null==i||null==(o=i.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},n=cY({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),i=this.operator||e.operator;return i&&n.find(e=>e.value===i)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cz.define({label:'{{t("Custom field")}}',sort:1}),cz.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cH,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":cM,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":cx,properties:{recordSelectTargetCollection:{type:"string","x-validator":c$},recordSelectTitleField:{type:"string","x-validator":c$},recordSelectValueField:{type:"string","x-validator":c$}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cB,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,I.uid)().slice(0,4)}`}),handler(e,t){var l,o;let n,{fieldModel:i,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===i){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},n=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||n.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=n.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:i,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===i){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}n&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:n});let p=!!cY({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cN({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let cU="__filter_form_value_options__",cK=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cG=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cW=(e,t,l,o,n,i)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],n=null==e?void 0:e[l];null!=t&&null!=n&&r.set(t,n)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let n=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return n;let a=r.get(n);return null!=a?a:cG(n,i)}if(o===l)return e;let t=r.get(e);return null!=t?t:cG(e,i)};return(n&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cK(e,i))},cJ=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cX=(e,t)=>{var l,o;let n=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==n?void 0:n.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==n?void 0:n.name)||e.fieldPath,u=(0,i.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll("&gt;",">"):null},cQ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:n,allowMultiple:i,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(n&&i),g=u$(r,o,h),y=(0,f.useFlowModel)(),_=!!y.context.flowSettingsEnabled,{t:x}=(0,v.useTranslation)(),M=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:x("Add")+` “${t}” `})]})},w=cX(y,u);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uq(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uH,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
889
889
  div {
890
890
  white-space: nowrap !important;
891
891
  overflow: hidden;
@@ -1155,7 +1155,7 @@ ctx.render(\`
1155
1155
  text-overflow: ellipsis;
1156
1156
  max-width: 100%;
1157
1157
  }
1158
- `),changeOnSelect:!0,options:u||p,onDropdownVisibleChange:t=>{e.onDropdownVisibleChange(t),t&&setTimeout(()=>{S()},100)},fieldNames:d,showSearch:!0,onSearch:e=>a(e),displayRender:w,onChange:(t,l)=>{var o,n;let i=(null==e||null==(n=e.collectionField)||null==(o=n.targetCollection)?void 0:o.template)==="tree";s||i?r(gm(l)):r((0,g.last)(l))},value:x.length?x:void 0})};class gy extends gg{render(){return(0,m.jsx)(gv,{...this.props,resource:this.resource,collectionField:this.collectionField,underDefaultValueConfig:"CascadeSelectFieldModel"!==this.use})}}class g_ extends gg{render(){return(0,m.jsx)(gf,{name:this.props.name,disabled:this.props.disabled,options:this.props.options,onDropdownVisibleChange:this.props.onDropdownVisibleChange,onPopupScroll:this.props.onPopupScroll,fieldNames:this.props.fieldNames,showSearch:!0,onSearch:e=>this.props.onSearch(e),onChange:e=>{this.props.onChange(e)},collectionField:this.collectionField,value:(0,g.castArray)(this.props.value).filter(Boolean),underDefaultValueConfig:"CascadeSelectListFieldModel"!==this.use})}}let gb={page:1,pageSize:40,loading:!1,hasMore:!0};async function gx(e,t){try{var l,o,n,i;let t=e.model.collectionField.targetCollection,r=e.model.props.fieldNames.label,a=t.getField(r).getInterfaceOptions(),s=(null==a||null==(n=a.filterable)||null==(o=n.operators)||null==(l=o[0])?void 0:l.value)||"$includes",d=null==(i=e.inputArgs.searchText)?void 0:i.trim(),u=e.model.resource,c=`${r}.${s}`;""===d?u.removeFilterGroup(r):(u.setPage(1),u.addFilterGroup(r,{[c]:d})),await u.refresh();let p=u.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(p),p.length<gb.pageSize?gb.hasMore=!1:(gb.hasMore=!0,gb.page++),e.model.setProps({searchText:d})}catch(t){console.error("CascadeSelectFieldModel search flow error:",t),e.model.setDataSource([])}}gg.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e){let t=e.model.props.fieldNames.label;e.model.onDropdownVisibleChange=l=>{l?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(t),gb.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})},e.model.onLoadData=async t=>{let l=t[t.length-1];e.model.dispatchEvent("loadChildren",{targetOption:l,apiClient:e.app.apiClient})}}}}}),gg.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{loadData:{async handler(e){let t=e.model.resource;e.model.getDataSource(),t.setPage(1),t.setRequestParameters({tree:!0}),await e.model.applyFlow("selectSettings"),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(l),gb.hasMore=l.length>=gb.pageSize,gb.page=2}}}}),gg.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{loadData:{async handler(e){var t;let{scrollTop:l,scrollHeight:o,clientHeight:n}=(null==(t=e.inputArgs)?void 0:t.event).target;if(!(l+n<o-20)&&!gb.loading&&gb.hasMore){gb.loading=!0;try{let t=e.model.resource;t.setPage(gb.page),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}}),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<gb.pageSize?gb.hasMore=!1:gb.page++}finally{gb.loading=!1}}}}}});let gM=(0,g.debounce)(gx,500);gg.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:gM}}}),gg.registerFlow({key:"cascadeSelectSettings",sort:200,steps:{init:{handler(e){let t=e.createResource(f.MultiRecordResource),{target:l,dataSourceKey:o}=e.model.context.collectionField;t.setDataSourceKey(o),t.setResourceName(l),t.setPageSize(gb.pageSize),e.model.resource=t}}}}),gg.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Cascader select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"}}}),gy.define({label:(0,f.tExpr)("Cascader")}),g_.define({label:(0,f.tExpr)("Cascader")}),f.EditableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60}),f.FilterableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60,defaultProps:(e,t)=>({fieldNames:gi(t)})}),f.EditableItemModel.bindModelToInterface("CascadeSelectListFieldModel",["m2m","o2m","mbm"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60});let gw=Symbol("popupBeforeCloseNext");function gS(e,t){let l=e?[e]:[],o=new Set;for(;l.length;){let e=l.pop();!(null==e?void 0:e.uid)||o.has(e.uid)||(o.add(e.uid),t(e),Object.values(e.subModels||{}).forEach(e=>{Array.isArray(e)?l.push(...e):e&&"object"==typeof e&&l.push(e)}))}}function gk(e,t){let l,o=e.beforeClose;for(;o;){if(o===t){l?l[gw]=o[gw]:e.beforeClose=o[gw];break}if(!(gw in o))break;l=o,o=o[gw]}}function gF(e){let{view:t,model:l,modal:o,t:n}=e,i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],o=e.length?new Set(e):null;return gS(l,e=>{var l,n;e.uid&&(null==(n=e.getUserModifiedFields)||null==(l=n.call(e))?void 0:l.size)&&!(null==o?void 0:o.has(e.uid))&&t.push(e.uid)}),t},r=e=>{if(!e.length)return;let t=new Set(e);gS(l,e=>{if(e.uid&&t.has(e.uid)){var l;null==(l=e.resetUserModifiedFields)||l.call(e)}})},a=async e=>{let t=e.force?[]:i(e.ignoredDirtyFormModelUids);if(t.length&&!await o.confirm({title:n("Unsaved changes"),content:n("Are you sure you don't want to save?"),okText:n("Confirm"),cancelText:n("Cancel")}))return!1;let l=a[gw],s=t.length?Array.from(new Set([...e.ignoredDirtyFormModelUids||[],...t])):e.ignoredDirtyFormModelUids;return await (null==l?void 0:l({...e,ignoredDirtyFormModelUids:s}))!==!1&&(t.length&&r(t),!0)};return a[gw]=t.beforeClose,t.beforeClose=a,()=>{gk(t,a)}}function gC(e){let{targetModel:t,children:l}=e,o=t.context.t,n=t,r=n.context.collectionField.collection,a=r.dataSource,s=n.context.collectionField.name,d=(0,i.useMemo)(()=>{let e=`${o(a.displayName||a.key)} > `,t=r?`${o(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${s}`},[r,a.displayName,a.key,s,o]),{actionName:u}=n.forbidden||{},c=(0,i.useMemo)(()=>o('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:o((0,g.capitalize)(u))}).replaceAll("&gt;",">"),[u,d,o]);return(0,m.jsx)(b.Tooltip,{title:c,children:l})}function gA(e){let{options:t,fieldModel:l}=e,o=(0,f.useFlowViewContext)(),{data:n,loading:r}=(0,nB.useRequest)(async()=>{let e=await o.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:o,skipSave:!o.flowSettingsEnabled});return e.context.defineProperty("associationModel",{value:l.context.associationModel}),e.actionName=t.scene,e},{refreshDeps:[o,t]});return((0,i.useEffect)(()=>{if(null==n?void 0:n.uid)return gF({view:o.view,model:n,modal:o.modal,t:o.t})},[o,n]),!r&&(null==n?void 0:n.uid))?(0,m.jsx)(f.FlowModelRenderer,{model:n,fallback:(0,m.jsx)(nV,{style:{margin:16}})}):(0,m.jsx)(nV,{style:{margin:16}})}function gP(e){let{model:t,scene:l="update"}=e,o=(0,f.useFlowContext)(),{Header:n,type:i}=o.view;t._closeView=o.view.close;let r="create"===l?o.t("Add new"):o.t("Edit");return(0,m.jsxs)("div",{children:[(0,m.jsx)(n,{title:"dialog"===i?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:r}):r}),(0,m.jsx)(gA,{options:{parentId:o.view.inputArgs.parentId,subKey:`${l}.edit-form-grid-block`,async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel",scene:l},fieldModel:t})]})}class gT extends aK.S0{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(gC,{targetModel:this,children:(0,m.jsx)(b.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(b.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(b.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}}gT.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{use:"aclCheck",async handler(e,t){var l,o;let n=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,actionName:e.actionName,fields:[e.collectionField.name]});e.actionName&&(n||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}});class gj extends gT{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(aK._T,{collection:this.context.collectionField.targetCollection,children:(0,m.jsx)(b.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(b.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(b.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}getAclActionName(){return"update"}async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("openView",{event:e,...this.getInputArgs()})})}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.defaultPopupTitle=(0,f.tExpr)("Edit"),this.defaultProps={type:"link",title:(0,f.tExpr)("Edit")}}}function gI(e,t){if(!t)return null;if(Array.isArray(t)){let l=t.map(t=>null==e?void 0:e[t]);return l.some(e=>null==e)?null:l.join("__")}let l=null==e?void 0:e[t];return null==l?null:String(l)}gj.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{async handler(e,t){var l,o;let n=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.target,actionName:e.actionName});e.actionName&&(n||e.record.__is_new__||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}}),gj.define({label:(0,f.tExpr)("Edit")}),gj.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,n,i,r,a,s,d,u,c,p,h,f;let g={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},v=e.inputArgs.mode||t.mode||"drawer",y=e.inputArgs.size||t.size||"medium",_=null==e?void 0:e.associationModel,b=(null==e?void 0:e.item)??(null==_||null==(l=_.context)?void 0:l.item)??{value:("function"==typeof(null==_||null==(o=_.context)?void 0:o.getFormValues)?_.context.getFormValues():null==_||null==(n=_.context)?void 0:n.formValues)??(null==_||null==(i=_.context)?void 0:i.record)},x=(null==e||null==(r=e.getPropertyOptions)?void 0:r.call(e,"item"))??(null==_||null==(s=_.context)||null==(a=s.getPropertyOptions)?void 0:a.call(s,"item")),M=Array.isArray(null==_||null==(d=_.props)?void 0:d.value)?_.props.value.length:void 0,w=(()=>{try{var t,l;let o=null==_||null==(t=_.props)?void 0:t.value,n=null==e?void 0:e.record;if(!Array.isArray(o)||!n)return;let i=o.indexOf(n);if(i>=0)return i;if(null!=n.__index__){let e=o.findIndex(e=>(null==e?void 0:e.__index__)===n.__index__);if(e>=0)return e}let r=null==e||null==(l=e.collection)?void 0:l.filterTargetKey;if(Array.isArray(r)){if(!r.every(e=>(null==n?void 0:n[e])!=null))return;let e=o.findIndex(e=>r.every(t=>(null==e?void 0:e[t])===(null==n?void 0:n[t])));return e>=0?e:void 0}if(r){let e=null==n?void 0:n[r];if(null==e)return;let t=o.findIndex(t=>(null==t?void 0:t[r])===e);return t>=0?t:void 0}return}catch(e){return}})(),S=null==(u=e.collectionField)?void 0:u.resourceName,k=(null==b?void 0:b.value)?null==(h=e.collectionField)||null==(p=h.collection)||null==(c=p.getFilterByTK)?void 0:c.call(p,b.value):void 0,F=uR(e,e.inputArgs);e.viewer.open({type:v,width:g[v][y],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(f=e.collectionField)?void 0:f.target,...S&&null!=k?{associationName:S,sourceId:k}:{},collectionField:e.collectionField,record:e.record,parentItem:b,parentItemMeta:null==x?void 0:x.meta,parentItemResolver:null==x?void 0:x.resolveOnServer,itemIndex:w,itemLength:M,openerUids:F},content:()=>(0,m.jsx)(gP,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===v?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}});let gL=i.default.memo(e=>{let t=(0,f.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,m.jsx)(f.DndProvider,{onDragEnd:l,children:(0,m.jsx)("thead",{...e})})}),gR=(0,__rspack_external__formily_reactive_react_41406960.observer)(e=>{let{className:t,title:l,editable:o,width:n,record:r,recordIndex:a,dataIndex:s,children:d,model:u,...c}=e,p=(0,i.useRef)(null),h=(0,f.useFlowModel)();return o?(0,m.jsxs)("td",{ref:p,...c,className:(0,m$.default)(t,(0,A.css)`
1158
+ `),changeOnSelect:!0,options:u||p,onDropdownVisibleChange:t=>{e.onDropdownVisibleChange(t),t&&setTimeout(()=>{S()},100)},fieldNames:d,showSearch:!0,onSearch:e=>a(e),displayRender:w,onChange:(t,l)=>{var o,n;let i=(null==e||null==(n=e.collectionField)||null==(o=n.targetCollection)?void 0:o.template)==="tree";s||i?r(gm(l)):r((0,g.last)(l))},value:x.length?x:void 0})};class gy extends gg{render(){return(0,m.jsx)(gv,{...this.props,resource:this.resource,collectionField:this.collectionField,underDefaultValueConfig:"CascadeSelectFieldModel"!==this.use})}}class g_ extends gg{render(){return(0,m.jsx)(gf,{name:this.props.name,disabled:this.props.disabled,options:this.props.options,onDropdownVisibleChange:this.props.onDropdownVisibleChange,onPopupScroll:this.props.onPopupScroll,fieldNames:this.props.fieldNames,showSearch:!0,onSearch:e=>this.props.onSearch(e),onChange:e=>{this.props.onChange(e)},collectionField:this.collectionField,value:(0,g.castArray)(this.props.value).filter(Boolean),underDefaultValueConfig:"CascadeSelectListFieldModel"!==this.use})}}let gb={page:1,pageSize:40,loading:!1,hasMore:!0};async function gx(e,t){try{var l,o,n,i;let t=e.model.collectionField.targetCollection,r=e.model.props.fieldNames.label,a=t.getField(r),s=a.getInterfaceOptions(),d="string"===a.type||"string"===a.dataType?"$includes":(null==s||null==(n=s.filterable)||null==(o=n.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(i=e.inputArgs.searchText)?void 0:i.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(r):(c.setPage(1),c.addFilterGroup(r,{[p]:u})),await c.refresh();let m=c.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(m),m.length<gb.pageSize?gb.hasMore=!1:(gb.hasMore=!0,gb.page++),e.model.setProps({searchText:u})}catch(t){console.error("CascadeSelectFieldModel search flow error:",t),e.model.setDataSource([])}}gg.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e){let t=e.model.props.fieldNames.label;e.model.onDropdownVisibleChange=l=>{l?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(t),gb.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})},e.model.onLoadData=async t=>{let l=t[t.length-1];e.model.dispatchEvent("loadChildren",{targetOption:l,apiClient:e.app.apiClient})}}}}}),gg.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{loadData:{async handler(e){let t=e.model.resource;e.model.getDataSource(),t.setPage(1),t.setRequestParameters({tree:!0}),await e.model.applyFlow("selectSettings"),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(l),gb.hasMore=l.length>=gb.pageSize,gb.page=2}}}}),gg.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{loadData:{async handler(e){var t;let{scrollTop:l,scrollHeight:o,clientHeight:n}=(null==(t=e.inputArgs)?void 0:t.event).target;if(!(l+n<o-20)&&!gb.loading&&gb.hasMore){gb.loading=!0;try{let t=e.model.resource;t.setPage(gb.page),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}}),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<gb.pageSize?gb.hasMore=!1:gb.page++}finally{gb.loading=!1}}}}}});let gM=(0,g.debounce)(gx,500);gg.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:gM}}}),gg.registerFlow({key:"cascadeSelectSettings",sort:200,steps:{init:{handler(e){let t=e.createResource(f.MultiRecordResource),{target:l,dataSourceKey:o}=e.model.context.collectionField;t.setDataSourceKey(o),t.setResourceName(l),t.setPageSize(gb.pageSize),e.model.resource=t}}}}),gg.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Cascader select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"}}}),gy.define({label:(0,f.tExpr)("Cascader")}),g_.define({label:(0,f.tExpr)("Cascader")}),f.EditableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60}),f.FilterableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60,defaultProps:(e,t)=>({fieldNames:gi(t)})}),f.EditableItemModel.bindModelToInterface("CascadeSelectListFieldModel",["m2m","o2m","mbm"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60});let gw=Symbol("popupBeforeCloseNext");function gS(e,t){let l=e?[e]:[],o=new Set;for(;l.length;){let e=l.pop();!(null==e?void 0:e.uid)||o.has(e.uid)||(o.add(e.uid),t(e),Object.values(e.subModels||{}).forEach(e=>{Array.isArray(e)?l.push(...e):e&&"object"==typeof e&&l.push(e)}))}}function gk(e,t){let l,o=e.beforeClose;for(;o;){if(o===t){l?l[gw]=o[gw]:e.beforeClose=o[gw];break}if(!(gw in o))break;l=o,o=o[gw]}}function gF(e){let{view:t,model:l,modal:o,t:n}=e,i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],o=e.length?new Set(e):null;return gS(l,e=>{var l,n;e.uid&&(null==(n=e.getUserModifiedFields)||null==(l=n.call(e))?void 0:l.size)&&!(null==o?void 0:o.has(e.uid))&&t.push(e.uid)}),t},r=e=>{if(!e.length)return;let t=new Set(e);gS(l,e=>{if(e.uid&&t.has(e.uid)){var l;null==(l=e.resetUserModifiedFields)||l.call(e)}})},a=async e=>{let t=e.force?[]:i(e.ignoredDirtyFormModelUids);if(t.length&&!await o.confirm({title:n("Unsaved changes"),content:n("Are you sure you don't want to save?"),okText:n("Confirm"),cancelText:n("Cancel")}))return!1;let l=a[gw],s=t.length?Array.from(new Set([...e.ignoredDirtyFormModelUids||[],...t])):e.ignoredDirtyFormModelUids;return await (null==l?void 0:l({...e,ignoredDirtyFormModelUids:s}))!==!1&&(t.length&&r(t),!0)};return a[gw]=t.beforeClose,t.beforeClose=a,()=>{gk(t,a)}}function gC(e){let{targetModel:t,children:l}=e,o=t.context.t,n=t,r=n.context.collectionField.collection,a=r.dataSource,s=n.context.collectionField.name,d=(0,i.useMemo)(()=>{let e=`${o(a.displayName||a.key)} > `,t=r?`${o(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${s}`},[r,a.displayName,a.key,s,o]),{actionName:u}=n.forbidden||{},c=(0,i.useMemo)(()=>o('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:o((0,g.capitalize)(u))}).replaceAll("&gt;",">"),[u,d,o]);return(0,m.jsx)(b.Tooltip,{title:c,children:l})}function gA(e){let{options:t,fieldModel:l}=e,o=(0,f.useFlowViewContext)(),{data:n,loading:r}=(0,nB.useRequest)(async()=>{let e=await o.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:o,skipSave:!o.flowSettingsEnabled});return e.context.defineProperty("associationModel",{value:l.context.associationModel}),e.actionName=t.scene,e},{refreshDeps:[o,t]});return((0,i.useEffect)(()=>{if(null==n?void 0:n.uid)return gF({view:o.view,model:n,modal:o.modal,t:o.t})},[o,n]),!r&&(null==n?void 0:n.uid))?(0,m.jsx)(f.FlowModelRenderer,{model:n,fallback:(0,m.jsx)(nV,{style:{margin:16}})}):(0,m.jsx)(nV,{style:{margin:16}})}function gP(e){let{model:t,scene:l="update"}=e,o=(0,f.useFlowContext)(),{Header:n,type:i}=o.view;t._closeView=o.view.close;let r="create"===l?o.t("Add new"):o.t("Edit");return(0,m.jsxs)("div",{children:[(0,m.jsx)(n,{title:"dialog"===i?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:r}):r}),(0,m.jsx)(gA,{options:{parentId:o.view.inputArgs.parentId,subKey:`${l}.edit-form-grid-block`,async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel",scene:l},fieldModel:t})]})}class gT extends aK.S0{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(gC,{targetModel:this,children:(0,m.jsx)(b.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(b.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(b.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}}gT.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{use:"aclCheck",async handler(e,t){var l,o;let n=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,actionName:e.actionName,fields:[e.collectionField.name]});e.actionName&&(n||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}});class gj extends gT{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(aK._T,{collection:this.context.collectionField.targetCollection,children:(0,m.jsx)(b.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(b.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(b.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}getAclActionName(){return"update"}async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("openView",{event:e,...this.getInputArgs()})})}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.defaultPopupTitle=(0,f.tExpr)("Edit"),this.defaultProps={type:"link",title:(0,f.tExpr)("Edit")}}}function gI(e,t){if(!t)return null;if(Array.isArray(t)){let l=t.map(t=>null==e?void 0:e[t]);return l.some(e=>null==e)?null:l.join("__")}let l=null==e?void 0:e[t];return null==l?null:String(l)}gj.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{async handler(e,t){var l,o;let n=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.target,actionName:e.actionName});e.actionName&&(n||e.record.__is_new__||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}}),gj.define({label:(0,f.tExpr)("Edit")}),gj.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,n,i,r,a,s,d,u,c,p,h,f;let g={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},v=e.inputArgs.mode||t.mode||"drawer",y=e.inputArgs.size||t.size||"medium",_=null==e?void 0:e.associationModel,b=(null==e?void 0:e.item)??(null==_||null==(l=_.context)?void 0:l.item)??{value:("function"==typeof(null==_||null==(o=_.context)?void 0:o.getFormValues)?_.context.getFormValues():null==_||null==(n=_.context)?void 0:n.formValues)??(null==_||null==(i=_.context)?void 0:i.record)},x=(null==e||null==(r=e.getPropertyOptions)?void 0:r.call(e,"item"))??(null==_||null==(s=_.context)||null==(a=s.getPropertyOptions)?void 0:a.call(s,"item")),M=Array.isArray(null==_||null==(d=_.props)?void 0:d.value)?_.props.value.length:void 0,w=(()=>{try{var t,l;let o=null==_||null==(t=_.props)?void 0:t.value,n=null==e?void 0:e.record;if(!Array.isArray(o)||!n)return;let i=o.indexOf(n);if(i>=0)return i;if(null!=n.__index__){let e=o.findIndex(e=>(null==e?void 0:e.__index__)===n.__index__);if(e>=0)return e}let r=null==e||null==(l=e.collection)?void 0:l.filterTargetKey;if(Array.isArray(r)){if(!r.every(e=>(null==n?void 0:n[e])!=null))return;let e=o.findIndex(e=>r.every(t=>(null==e?void 0:e[t])===(null==n?void 0:n[t])));return e>=0?e:void 0}if(r){let e=null==n?void 0:n[r];if(null==e)return;let t=o.findIndex(t=>(null==t?void 0:t[r])===e);return t>=0?t:void 0}return}catch(e){return}})(),S=null==(u=e.collectionField)?void 0:u.resourceName,k=(null==b?void 0:b.value)?null==(h=e.collectionField)||null==(p=h.collection)||null==(c=p.getFilterByTK)?void 0:c.call(p,b.value):void 0,F=uR(e,e.inputArgs);e.viewer.open({type:v,width:g[v][y],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(f=e.collectionField)?void 0:f.target,...S&&null!=k?{associationName:S,sourceId:k}:{},collectionField:e.collectionField,record:e.record,parentItem:b,parentItemMeta:null==x?void 0:x.meta,parentItemResolver:null==x?void 0:x.resolveOnServer,itemIndex:w,itemLength:M,openerUids:F},content:()=>(0,m.jsx)(gP,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===v?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}});let gL=i.default.memo(e=>{let t=(0,f.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,m.jsx)(f.DndProvider,{onDragEnd:l,children:(0,m.jsx)("thead",{...e})})}),gR=(0,__rspack_external__formily_reactive_react_41406960.observer)(e=>{let{className:t,title:l,editable:o,width:n,record:r,recordIndex:a,dataIndex:s,children:d,model:u,...c}=e,p=(0,i.useRef)(null),h=(0,f.useFlowModel)();return o?(0,m.jsxs)("td",{ref:p,...c,className:(0,m$.default)(t,(0,A.css)`
1159
1159
  .edit-icon {
1160
1160
  position: absolute;
1161
1161
  display: none;
package/lib/index.js CHANGED
@@ -885,7 +885,7 @@ if (!ctx.record) {
885
885
  text-overflow: ellipsis;
886
886
  white-space: nowrap !important;
887
887
  }
888
- `,u6=e=>{var t,l;let{fieldNames:o,value:i,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,b=(0,f.useFlowModel)(),M=uR(o,null==b||null==(l=b.context)||null==(t=l.collectionField)?void 0:t.targetCollection),_=!!(r&&a),S=!!(s&&_),w=u$(d,i,_),F=(0,n.useRef)();F.current||(F.current=b.__keepOpenOnSelectRuntime||(b.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let k=F.current,[C,A]=(0,n.useState)(k.open),P=e=>{Object.assign(k,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(k.open)},T=!!b.context.flowSettingsEnabled,{t:I}=(0,v.useTranslation)();uB({model:b,value:i,isMultiple:_,fieldNames:M,onChange:c});let L=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:I("Add")+` “${t}” `})]})},R=u8(b,h);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...y,className:[u4,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:M,options:w,value:uq(i,M,_),mode:_?"multiple":void 0,open:S?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;S&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(S){if(!e&&k.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}u1(b,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{S&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uH,{option:t,fieldNames:M})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u3,children:e.label}),dropdownRender:e=>{let t=w.some(e=>e[M.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===w.length&&y.searchText)&&e,w.length>0&&y.searchText&&!t&&(0,m.jsx)(x.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(L,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,children:I("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:b.collectionField.targetCollection,message:R,children:(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:I("Add new")})}))]})};class u9 extends uP{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uR(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uQ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u6,{...this.props})}}let u7={page:1,pageSize:40,loading:!1,hasMore:!0},ce=e=>`__search__${e}`,ct=e=>`__assoc__${e}`;async function cl(e,t){try{var l,o,i,n;let t=e.model.collectionField.targetCollection,r=uR(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d=(null==s||null==(i=s.filterable)||null==(o=i.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(n=e.inputArgs.searchText)?void 0:n.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(ce(r)):(c.setPage(1),c.addFilterGroup(ce(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u9.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=ce(uR(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u7.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u9.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uR(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,i=e.model.resource,n=e.model.getDataSource();i.setPage(1),await e.model.applyFlow("selectSettings"),await i.refresh();let{count:r}=i.getMeta(),a=i.getData();(!n||r!==n.length||a[0][o]!==n[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++))}}}}),u9.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:i,clientHeight:n}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+n<i-20)&&!u7.loading&&u7.hasMore){u7.loading=!0;try{let t=e.model.resource;t.setPage(u7.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u7.pageSize?(u7.hasMore=!1,u7.page=1):u7.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u7.loading=!1}}}}}});let co=(0,g.debounce)(cl,500);u9.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:co}}}),u9.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let i=e.createResource(f.MultiRecordResource),n=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=n;i.setDataSourceKey(a),i.setResourceName(r),i.setPageSize(u7.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(n.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==n?void 0:n.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&i.addFilterGroup(ct(s),{$or:m}),e.model.resource=i}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u9.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uZ(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u9.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,i;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:n,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(n(["m2m","o2m"].includes(null==(i=e.collectionField)?void 0:i.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u9.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,i,n,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(i=p.getFilterByTK)?void 0:i.call(p,h):void 0,g=null==(n=e.collectionField)?void 0:n.resourceName,v=uj(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},...g&&null==f?{sourceAssociationName:g}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u5,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u9.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class ci extends u9{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}ci.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,i="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:i,multiple:i})}}}}),ci.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var cn=__nested_rspack_require_1264899__(6832);class cr extends uA{render(){return(0,m.jsx)(cn.DateFilterDynamicComponent,{...this.props})}}let ca=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:i,...n}=e,r={...n,value:t,format:l,picker:o,showTime:i};return(0,m.jsx)(cn.DateFilterDynamicComponent,{...r})};class cs extends cr{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:i="date",...n}=e,r=o&&"date"===i?"YYYY-MM-DD":l;return(0,m.jsx)(cn.DateFilterDynamicComponent,{...n,value:t,format:r,picker:i,showTime:o})};class cu extends cr{render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cc=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:i,...n}=e,r=i&&"date"===o?"YYYY-MM-DD":l,a={...n,value:t,format:r,picker:o,showTime:i};return(0,m.jsx)(cn.DateFilterDynamicComponent,{...a})};class cp extends cr{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cc,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cm="recordSelectDataSourceKey",ch="recordSelectTargetCollection",cf="recordSelectTitleField",cg="recordSelectValueField",cv="allowMultiple",cy="multiple",cb="valueMode",cx=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),cM=e=>{var t,l,o,i,r;let{fieldModel:a,source:s=[]}=e,d=(0,lI.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),b=(0,et.Sx)(y),M=(0,n.useCallback)(e=>(0,et.w6)(e,y),[y]),_=()=>d.value||{},S=(e,t)=>{d.setValue({..._(),[e]:t})},w=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},F=e=>{var t,l,o,i;let n=`${d.path.toString()}.${e}`,r=null==(i=d.form)||null==(o=i.query)||null==(l=o.call(i,n))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},k=e=>{let t=F(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,n.useEffect)(()=>{var e,t,l,o,i,n,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cm])||(null==(i=m[0])?void 0:i.key)||"main",y=(u?a.slice(1):a).join("."),b=h.dataSourceManager.getCollectionField(`${v}.${y}`),x=f.FilterableItemModel.getDefaultBindingByField(g.model.context,b);if(!b&&"FilterFormCustomRecordSelectFieldModel"!==p||!x&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let M=(null==b||null==(n=b.getComponentProps)?void 0:n.call(b))||{},S={...(x&&"function"==typeof x.defaultProps?x.defaultProps(g.model.context,d):null==x?void 0:x.defaultProps)||{},...M,..._()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==b?void 0:b.target))&&(null==b?void 0:b.target)){let e=b.targetCollection||h.dataSourceManager.getCollection(b.dataSourceKey,b.target);S[cm]=b.dataSourceKey||v,S[ch]=b.target,S[cf]=b.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||S[cf],S[cg]=S[cg]||(null==e?void 0:e.filterTargetKey)||"id",void 0===S[cv]&&void 0===S[cy]&&(S[cv]=!0,S[cy]=!0),S[cb]||(S[cb]="value")}w(S)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,n.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,n.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cm])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(i=h.dataSourceManager)||null==(o=i.getDataSource)?void 0:o.call(i,P):void 0,I=null==c?void 0:c[ch],L=I?null==T||null==(r=T.getCollection)?void 0:r.call(T,I):void 0,R=(0,n.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),j=(0,n.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:R(e.title)||e.name,value:e.name})):[],[T,R]),D=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{if(!b)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(M(null==t?void 0:t.interface))};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]),E=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(b){let e=M(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cx.has(o)};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]);if((0,n.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!I||(null==c?void 0:c[cf]))return;let t=null==L||null==(e=L.titleCollectionField)?void 0:e.name;t&&d.setValue({..._(),[cf]:t})},[a,p,I,L,c]),(0,n.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!I)return;let e=null==c?void 0:c[cg],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==L?void 0:L.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({..._(),[cg]:o})},[a,p,I,L,c,E]),(0,n.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cv])===void 0&&(null==c?void 0:c[cy])===void 0&&d.setValue({..._(),[cv]:!0,[cy]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Date format"),children:(0,m.jsxs)(x.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>S("format",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(x.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(x.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Time"),children:(0,m.jsx)(x.Checkbox,{checked:c.showTime,onChange:e=>S("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(ni.FormItem,{label:u("Date range"),children:(0,m.jsx)(x.Checkbox,{checked:c.isRange,onChange:e=>S("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Mode"),children:(0,m.jsxs)(x.Radio.Group,{value:c.mode||"",onChange:e=>S("mode",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(x.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(ni.FormItem,{label:u("Data source"),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cm]:e,[ch]:void 0,[cf]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Target collection"),asterisk:!0,...k(ch),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:I,options:j,onChange:e=>{d.setValue({...c,[ch]:e,[cf]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Title field"),asterisk:!0,...k(cf),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cf],options:D,onChange:e=>S(cf,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(ni.FormItem,{label:u("Value field"),asterisk:!0,...k(cg),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cg],options:E,onChange:e=>S(cg,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(ni.FormItem,{label:u("Multiple"),children:(0,m.jsx)(x.Checkbox,{checked:(null==c?void 0:c[cv])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cv]:t,[cy]:t})},children:u("Allow multiple selection")})})]}):null};function c_(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),i=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,n.useRef)(),d=(0,n.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,n.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(i.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,n.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(ni.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cS={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},cw=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),cF={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},ck={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cC={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function cA(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cS[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cP(e){var t,l,o,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(n)||0===n.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,n[0])),s=a?n[0]:r||"main",d=(a?n.slice(1):n).join(".");if(d)return null==e||null==(i=e.dataSourceManager)||null==(o=i.getCollectionField)?void 0:o.call(i,`${s}.${d}`)}function cT(e){var t,l,o,i;let n;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{n=null==(i=e.getInterfaceOptions)||null==(o=i.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){n=void 0}return Array.isArray(n)&&n.length>0?n:e.interface&&cC[e.interface]?cC[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cI(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cL(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cR(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>cw.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),i=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),n=i||t,r=i||l,a=[];return n&&a.push(cF),r&&a.push(ck),cL([...a,...o])}function cj(e){var t,l,o,i,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cP(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(i=p.getPrimaryKey)?void 0:i.call(p));if(m)return null==(n=p.getField)?void 0:n.call(p,m)}function cD(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,i=cj(t,l,o),n=cT(i);return{operatorList:cI(l)?cR(n):n,meta:i}}function cE(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:i=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cD(e);let n=cP(t,i);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&n){let e=cT(n);return{operatorList:a0(n)?cA(l,o):cR(e),meta:n}}let r=cA(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cT(n),meta:n}}function cY(e){let{operatorList:t,meta:l}=cE(e);return cL((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cN(e){var t,l;let{fieldModel:o,fieldModelProps:i={}}=e,n=cY(e);if("DateTimeFilterFieldModel"===o&&(null==i?void 0:i.isRange)){let e=n.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=n.find(e=>e.selected))?void 0:t.value)||(null==(l=n[0])?void 0:l.value)}function cO(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cB=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:i={},value:r,onChange:a,...s}=e,d=(0,lI.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:i,y=Array.isArray(g)?g.join("."):"",b=null==v?void 0:v.mode,x=null==v?void 0:v.allowMultiple,M=null==v?void 0:v.multiple,_=null==v?void 0:v.recordSelectDataSourceKey,S=null==v?void 0:v.recordSelectTargetCollection,w=null==v?void 0:v.recordSelectValueField,F=(0,n.useMemo)(()=>cY({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,b,x,M,_,S,w]),k=(0,n.useMemo)(()=>cO(F,e=>c.t(e)),[F,c]);return(0,n.useEffect)(()=>{if(!k.length){void 0!==r&&(null==a||a(void 0));return}if(k.some(e=>e.value===r))return;let e=cN({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,k,y,r,b,x,M,_,S,w]),(0,m.jsx)(ni.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:k,value:r,onChange:a,disabled:0===k.length})});class cV extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[i,n]=t,r={key:i,label:e.t(n.meta.label),sort:n.meta.sort??999,searchable:!!(null==(l=n.meta)?void 0:l.searchable),searchPlaceholder:null==(o=n.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:i},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cH(e){let t=(0,f.useFlowEngine)(),l=(0,n.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,i]=(0,n.useState)(()=>l());(0,n.useEffect)(()=>{i(l())},[l]);let r=(0,n.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let n=null==t?void 0:t.dataSourceManager;if(!n)return;let r=[];if(1===e.length){let e=o.value,t=n.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=n.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,i(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),i=null==o?void 0:o.targetCollection;r=((null==i?void 0:i.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,i(e=>[...e])},[t]);return(0,m.jsx)(x.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cV.renderMode=f.ModelRenderMode.RenderFunction,cV.define({hide:!0,label:(0,f.tExpr)("Others")});var cq=__nested_rspack_require_1264899__(6175);let c$=(e,t,l)=>{var o,i,n;if((null==l||null==(i=l.form)||null==(o=i.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(n=l.t)?void 0:n.call(l,"The field value is required"))||"The field value is required"};class cU extends cV{buildRecordSelectCollectionField(e,t){var l,o,i,n,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(i=u.getCollection)?void 0:i.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(n=c.titleCollectionField)?void 0:n.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let i=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),n=this.getCurrentOperatorMeta(),r=(0,cq.S)(this.operator,i);return(null==n?void 0:n.noValue)&&!Array.isArray(null==n||null==(o=n.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},i=cY({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),n=this.operator||e.operator;return n&&i.find(e=>e.value===n)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cU.define({label:'{{t("Custom field")}}',sort:1}),cU.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cH,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":c_,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":cM,properties:{recordSelectTargetCollection:{type:"string","x-validator":c$},recordSelectTitleField:{type:"string","x-validator":c$},recordSelectValueField:{type:"string","x-validator":c$}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cB,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,L.uid)().slice(0,4)}`}),handler(e,t){var l,o;let i,{fieldModel:n,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===n){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},i=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||i.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=i.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:n,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===n){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}i&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:i});let p=!!cY({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cN({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let cz="__filter_form_value_options__",cK=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cG=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cW=(e,t,l,o,i,n)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],i=null==e?void 0:e[l];null!=t&&null!=i&&r.set(t,i)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let i=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return i;let a=r.get(i);return null!=a?a:cG(i,n)}if(o===l)return e;let t=r.get(e);return null!=t?t:cG(e,n)};return(i&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cK(e,n))},cJ=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cX=(e,t)=>{var l,o;let i=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==i?void 0:i.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==i?void 0:i.name)||e.fieldPath,u=(0,n.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll("&gt;",">"):null},cQ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:i,allowMultiple:n,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(i&&n),g=u$(r,o,h),y=(0,f.useFlowModel)(),b=!!y.context.flowSettingsEnabled,{t:M}=(0,v.useTranslation)(),_=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:M("Add")+` “${t}” `})]})},S=cX(y,u);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uq(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uH,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
888
+ `,u6=e=>{var t,l;let{fieldNames:o,value:i,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,b=(0,f.useFlowModel)(),M=uR(o,null==b||null==(l=b.context)||null==(t=l.collectionField)?void 0:t.targetCollection),_=!!(r&&a),S=!!(s&&_),w=u$(d,i,_),F=(0,n.useRef)();F.current||(F.current=b.__keepOpenOnSelectRuntime||(b.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let k=F.current,[C,A]=(0,n.useState)(k.open),P=e=>{Object.assign(k,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(k.open)},T=!!b.context.flowSettingsEnabled,{t:I}=(0,v.useTranslation)();uB({model:b,value:i,isMultiple:_,fieldNames:M,onChange:c});let L=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:I("Add")+` “${t}” `})]})},R=u8(b,h);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...y,className:[u4,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:M,options:w,value:uq(i,M,_),mode:_?"multiple":void 0,open:S?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;S&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(S){if(!e&&k.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}u1(b,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{S&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uH,{option:t,fieldNames:M})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u3,children:e.label}),dropdownRender:e=>{let t=w.some(e=>e[M.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===w.length&&y.searchText)&&e,w.length>0&&y.searchText&&!t&&(0,m.jsx)(x.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(L,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,children:I("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:b.collectionField.targetCollection,message:R,children:(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:I("Add new")})}))]})};class u9 extends uP{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uR(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uQ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u6,{...this.props})}}let u7={page:1,pageSize:40,loading:!1,hasMore:!0},ce=e=>`__search__${e}`,ct=e=>`__assoc__${e}`;async function cl(e,t){try{var l,o,i,n;let t=e.model.collectionField.targetCollection,r=uR(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d="string"===a.type||"string"===a.dataType?"$includes":(null==s||null==(i=s.filterable)||null==(o=i.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(n=e.inputArgs.searchText)?void 0:n.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(ce(r)):(c.setPage(1),c.addFilterGroup(ce(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u9.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=ce(uR(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u7.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u9.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uR(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,i=e.model.resource,n=e.model.getDataSource();i.setPage(1),await e.model.applyFlow("selectSettings"),await i.refresh();let{count:r}=i.getMeta(),a=i.getData();(!n||r!==n.length||a[0][o]!==n[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u7.pageSize?u7.hasMore=!1:(u7.hasMore=!0,u7.page++))}}}}),u9.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:i,clientHeight:n}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+n<i-20)&&!u7.loading&&u7.hasMore){u7.loading=!0;try{let t=e.model.resource;t.setPage(u7.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u7.pageSize?(u7.hasMore=!1,u7.page=1):u7.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u7.loading=!1}}}}}});let co=(0,g.debounce)(cl,500);u9.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:co}}}),u9.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let i=e.createResource(f.MultiRecordResource),n=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=n;i.setDataSourceKey(a),i.setResourceName(r),i.setPageSize(u7.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(n.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==n?void 0:n.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&i.addFilterGroup(ct(s),{$or:m}),e.model.resource=i}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u9.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uZ(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u9.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,i;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:n,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(n(["m2m","o2m"].includes(null==(i=e.collectionField)?void 0:i.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u9.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,i,n,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(i=p.getFilterByTK)?void 0:i.call(p,h):void 0,g=null==(n=e.collectionField)?void 0:n.resourceName,v=uj(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},...g&&null==f?{sourceAssociationName:g}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u5,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u9.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class ci extends u9{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}ci.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,i="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:i,multiple:i})}}}}),ci.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var cn=__nested_rspack_require_1264899__(6832);class cr extends uA{render(){return(0,m.jsx)(cn.DateFilterDynamicComponent,{...this.props})}}let ca=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:i,...n}=e,r={...n,value:t,format:l,picker:o,showTime:i};return(0,m.jsx)(cn.DateFilterDynamicComponent,{...r})};class cs extends cr{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:i="date",...n}=e,r=o&&"date"===i?"YYYY-MM-DD":l;return(0,m.jsx)(cn.DateFilterDynamicComponent,{...n,value:t,format:r,picker:i,showTime:o})};class cu extends cr{render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cc=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:i,...n}=e,r=i&&"date"===o?"YYYY-MM-DD":l,a={...n,value:t,format:r,picker:o,showTime:i};return(0,m.jsx)(cn.DateFilterDynamicComponent,{...a})};class cp extends cr{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cc,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cm="recordSelectDataSourceKey",ch="recordSelectTargetCollection",cf="recordSelectTitleField",cg="recordSelectValueField",cv="allowMultiple",cy="multiple",cb="valueMode",cx=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),cM=e=>{var t,l,o,i,r;let{fieldModel:a,source:s=[]}=e,d=(0,lI.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),b=(0,et.Sx)(y),M=(0,n.useCallback)(e=>(0,et.w6)(e,y),[y]),_=()=>d.value||{},S=(e,t)=>{d.setValue({..._(),[e]:t})},w=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},F=e=>{var t,l,o,i;let n=`${d.path.toString()}.${e}`,r=null==(i=d.form)||null==(o=i.query)||null==(l=o.call(i,n))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},k=e=>{let t=F(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,n.useEffect)(()=>{var e,t,l,o,i,n,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cm])||(null==(i=m[0])?void 0:i.key)||"main",y=(u?a.slice(1):a).join("."),b=h.dataSourceManager.getCollectionField(`${v}.${y}`),x=f.FilterableItemModel.getDefaultBindingByField(g.model.context,b);if(!b&&"FilterFormCustomRecordSelectFieldModel"!==p||!x&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let M=(null==b||null==(n=b.getComponentProps)?void 0:n.call(b))||{},S={...(x&&"function"==typeof x.defaultProps?x.defaultProps(g.model.context,d):null==x?void 0:x.defaultProps)||{},...M,..._()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==b?void 0:b.target))&&(null==b?void 0:b.target)){let e=b.targetCollection||h.dataSourceManager.getCollection(b.dataSourceKey,b.target);S[cm]=b.dataSourceKey||v,S[ch]=b.target,S[cf]=b.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||S[cf],S[cg]=S[cg]||(null==e?void 0:e.filterTargetKey)||"id",void 0===S[cv]&&void 0===S[cy]&&(S[cv]=!0,S[cy]=!0),S[cb]||(S[cb]="value")}w(S)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,n.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,n.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cm])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(i=h.dataSourceManager)||null==(o=i.getDataSource)?void 0:o.call(i,P):void 0,I=null==c?void 0:c[ch],L=I?null==T||null==(r=T.getCollection)?void 0:r.call(T,I):void 0,R=(0,n.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),j=(0,n.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:R(e.title)||e.name,value:e.name})):[],[T,R]),D=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{if(!b)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(M(null==t?void 0:t.interface))};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]),E=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(b){let e=M(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cx.has(o)};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]);if((0,n.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!I||(null==c?void 0:c[cf]))return;let t=null==L||null==(e=L.titleCollectionField)?void 0:e.name;t&&d.setValue({..._(),[cf]:t})},[a,p,I,L,c]),(0,n.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!I)return;let e=null==c?void 0:c[cg],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==L?void 0:L.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({..._(),[cg]:o})},[a,p,I,L,c,E]),(0,n.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cv])===void 0&&(null==c?void 0:c[cy])===void 0&&d.setValue({..._(),[cv]:!0,[cy]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Date format"),children:(0,m.jsxs)(x.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>S("format",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(x.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(x.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Time"),children:(0,m.jsx)(x.Checkbox,{checked:c.showTime,onChange:e=>S("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(ni.FormItem,{label:u("Date range"),children:(0,m.jsx)(x.Checkbox,{checked:c.isRange,onChange:e=>S("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Mode"),children:(0,m.jsxs)(x.Radio.Group,{value:c.mode||"",onChange:e=>S("mode",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(x.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(ni.FormItem,{label:u("Data source"),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cm]:e,[ch]:void 0,[cf]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Target collection"),asterisk:!0,...k(ch),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:I,options:j,onChange:e=>{d.setValue({...c,[ch]:e,[cf]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Title field"),asterisk:!0,...k(cf),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cf],options:D,onChange:e=>S(cf,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(ni.FormItem,{label:u("Value field"),asterisk:!0,...k(cg),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cg],options:E,onChange:e=>S(cg,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(ni.FormItem,{label:u("Multiple"),children:(0,m.jsx)(x.Checkbox,{checked:(null==c?void 0:c[cv])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cv]:t,[cy]:t})},children:u("Allow multiple selection")})})]}):null};function c_(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),i=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,n.useRef)(),d=(0,n.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,n.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(i.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,n.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(ni.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cS={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},cw=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),cF={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},ck={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cC={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function cA(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cS[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cP(e){var t,l,o,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(n)||0===n.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,n[0])),s=a?n[0]:r||"main",d=(a?n.slice(1):n).join(".");if(d)return null==e||null==(i=e.dataSourceManager)||null==(o=i.getCollectionField)?void 0:o.call(i,`${s}.${d}`)}function cT(e){var t,l,o,i;let n;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{n=null==(i=e.getInterfaceOptions)||null==(o=i.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){n=void 0}return Array.isArray(n)&&n.length>0?n:e.interface&&cC[e.interface]?cC[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cI(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cL(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cR(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>cw.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),i=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),n=i||t,r=i||l,a=[];return n&&a.push(cF),r&&a.push(ck),cL([...a,...o])}function cj(e){var t,l,o,i,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cP(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(i=p.getPrimaryKey)?void 0:i.call(p));if(m)return null==(n=p.getField)?void 0:n.call(p,m)}function cD(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,i=cj(t,l,o),n=cT(i);return{operatorList:cI(l)?cR(n):n,meta:i}}function cE(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:i=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cD(e);let n=cP(t,i);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&n){let e=cT(n);return{operatorList:a0(n)?cA(l,o):cR(e),meta:n}}let r=cA(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cT(n),meta:n}}function cY(e){let{operatorList:t,meta:l}=cE(e);return cL((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cN(e){var t,l;let{fieldModel:o,fieldModelProps:i={}}=e,n=cY(e);if("DateTimeFilterFieldModel"===o&&(null==i?void 0:i.isRange)){let e=n.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=n.find(e=>e.selected))?void 0:t.value)||(null==(l=n[0])?void 0:l.value)}function cO(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cB=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:i={},value:r,onChange:a,...s}=e,d=(0,lI.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:i,y=Array.isArray(g)?g.join("."):"",b=null==v?void 0:v.mode,x=null==v?void 0:v.allowMultiple,M=null==v?void 0:v.multiple,_=null==v?void 0:v.recordSelectDataSourceKey,S=null==v?void 0:v.recordSelectTargetCollection,w=null==v?void 0:v.recordSelectValueField,F=(0,n.useMemo)(()=>cY({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,b,x,M,_,S,w]),k=(0,n.useMemo)(()=>cO(F,e=>c.t(e)),[F,c]);return(0,n.useEffect)(()=>{if(!k.length){void 0!==r&&(null==a||a(void 0));return}if(k.some(e=>e.value===r))return;let e=cN({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,k,y,r,b,x,M,_,S,w]),(0,m.jsx)(ni.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:k,value:r,onChange:a,disabled:0===k.length})});class cV extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[i,n]=t,r={key:i,label:e.t(n.meta.label),sort:n.meta.sort??999,searchable:!!(null==(l=n.meta)?void 0:l.searchable),searchPlaceholder:null==(o=n.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:i},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cH(e){let t=(0,f.useFlowEngine)(),l=(0,n.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,i]=(0,n.useState)(()=>l());(0,n.useEffect)(()=>{i(l())},[l]);let r=(0,n.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let n=null==t?void 0:t.dataSourceManager;if(!n)return;let r=[];if(1===e.length){let e=o.value,t=n.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=n.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,i(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),i=null==o?void 0:o.targetCollection;r=((null==i?void 0:i.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,i(e=>[...e])},[t]);return(0,m.jsx)(x.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cV.renderMode=f.ModelRenderMode.RenderFunction,cV.define({hide:!0,label:(0,f.tExpr)("Others")});var cq=__nested_rspack_require_1264899__(6175);let c$=(e,t,l)=>{var o,i,n;if((null==l||null==(i=l.form)||null==(o=i.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(n=l.t)?void 0:n.call(l,"The field value is required"))||"The field value is required"};class cU extends cV{buildRecordSelectCollectionField(e,t){var l,o,i,n,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(i=u.getCollection)?void 0:i.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(n=c.titleCollectionField)?void 0:n.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let i=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),n=this.getCurrentOperatorMeta(),r=(0,cq.S)(this.operator,i);return(null==n?void 0:n.noValue)&&!Array.isArray(null==n||null==(o=n.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},i=cY({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),n=this.operator||e.operator;return n&&i.find(e=>e.value===n)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cU.define({label:'{{t("Custom field")}}',sort:1}),cU.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cH,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":c_,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":cM,properties:{recordSelectTargetCollection:{type:"string","x-validator":c$},recordSelectTitleField:{type:"string","x-validator":c$},recordSelectValueField:{type:"string","x-validator":c$}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cB,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,L.uid)().slice(0,4)}`}),handler(e,t){var l,o;let i,{fieldModel:n,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===n){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},i=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||i.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=i.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:n,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===n){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}i&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:i});let p=!!cY({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cN({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let cz="__filter_form_value_options__",cK=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cG=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cW=(e,t,l,o,i,n)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],i=null==e?void 0:e[l];null!=t&&null!=i&&r.set(t,i)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let i=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return i;let a=r.get(i);return null!=a?a:cG(i,n)}if(o===l)return e;let t=r.get(e);return null!=t?t:cG(e,n)};return(i&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cK(e,n))},cJ=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cX=(e,t)=>{var l,o;let i=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==i?void 0:i.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==i?void 0:i.name)||e.fieldPath,u=(0,n.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll("&gt;",">"):null},cQ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:i,allowMultiple:n,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(i&&n),g=u$(r,o,h),y=(0,f.useFlowModel)(),b=!!y.context.flowSettingsEnabled,{t:M}=(0,v.useTranslation)(),_=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:M("Add")+` “${t}” `})]})},S=cX(y,u);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uq(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uH,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
889
889
  div {
890
890
  white-space: nowrap !important;
891
891
  overflow: hidden;
@@ -1155,7 +1155,7 @@ ctx.render(\`
1155
1155
  text-overflow: ellipsis;
1156
1156
  max-width: 100%;
1157
1157
  }
1158
- `),changeOnSelect:!0,options:u||p,onDropdownVisibleChange:t=>{e.onDropdownVisibleChange(t),t&&setTimeout(()=>{w()},100)},fieldNames:d,showSearch:!0,onSearch:e=>a(e),displayRender:S,onChange:(t,l)=>{var o,i;let n=(null==e||null==(i=e.collectionField)||null==(o=i.targetCollection)?void 0:o.template)==="tree";s||n?r(gm(l)):r((0,g.last)(l))},value:M.length?M:void 0})};class gy extends gg{render(){return(0,m.jsx)(gv,{...this.props,resource:this.resource,collectionField:this.collectionField,underDefaultValueConfig:"CascadeSelectFieldModel"!==this.use})}}class gb extends gg{render(){return(0,m.jsx)(gf,{name:this.props.name,disabled:this.props.disabled,options:this.props.options,onDropdownVisibleChange:this.props.onDropdownVisibleChange,onPopupScroll:this.props.onPopupScroll,fieldNames:this.props.fieldNames,showSearch:!0,onSearch:e=>this.props.onSearch(e),onChange:e=>{this.props.onChange(e)},collectionField:this.collectionField,value:(0,g.castArray)(this.props.value).filter(Boolean),underDefaultValueConfig:"CascadeSelectListFieldModel"!==this.use})}}let gx={page:1,pageSize:40,loading:!1,hasMore:!0};async function gM(e,t){try{var l,o,i,n;let t=e.model.collectionField.targetCollection,r=e.model.props.fieldNames.label,a=t.getField(r).getInterfaceOptions(),s=(null==a||null==(i=a.filterable)||null==(o=i.operators)||null==(l=o[0])?void 0:l.value)||"$includes",d=null==(n=e.inputArgs.searchText)?void 0:n.trim(),u=e.model.resource,c=`${r}.${s}`;""===d?u.removeFilterGroup(r):(u.setPage(1),u.addFilterGroup(r,{[c]:d})),await u.refresh();let p=u.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(p),p.length<gx.pageSize?gx.hasMore=!1:(gx.hasMore=!0,gx.page++),e.model.setProps({searchText:d})}catch(t){console.error("CascadeSelectFieldModel search flow error:",t),e.model.setDataSource([])}}gg.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e){let t=e.model.props.fieldNames.label;e.model.onDropdownVisibleChange=l=>{l?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(t),gx.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})},e.model.onLoadData=async t=>{let l=t[t.length-1];e.model.dispatchEvent("loadChildren",{targetOption:l,apiClient:e.app.apiClient})}}}}}),gg.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{loadData:{async handler(e){let t=e.model.resource;e.model.getDataSource(),t.setPage(1),t.setRequestParameters({tree:!0}),await e.model.applyFlow("selectSettings"),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(l),gx.hasMore=l.length>=gx.pageSize,gx.page=2}}}}),gg.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{loadData:{async handler(e){var t;let{scrollTop:l,scrollHeight:o,clientHeight:i}=(null==(t=e.inputArgs)?void 0:t.event).target;if(!(l+i<o-20)&&!gx.loading&&gx.hasMore){gx.loading=!0;try{let t=e.model.resource;t.setPage(gx.page),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}}),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<gx.pageSize?gx.hasMore=!1:gx.page++}finally{gx.loading=!1}}}}}});let g_=(0,g.debounce)(gM,500);gg.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:g_}}}),gg.registerFlow({key:"cascadeSelectSettings",sort:200,steps:{init:{handler(e){let t=e.createResource(f.MultiRecordResource),{target:l,dataSourceKey:o}=e.model.context.collectionField;t.setDataSourceKey(o),t.setResourceName(l),t.setPageSize(gx.pageSize),e.model.resource=t}}}}),gg.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Cascader select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"}}}),gy.define({label:(0,f.tExpr)("Cascader")}),gb.define({label:(0,f.tExpr)("Cascader")}),f.EditableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60}),f.FilterableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60,defaultProps:(e,t)=>({fieldNames:gn(t)})}),f.EditableItemModel.bindModelToInterface("CascadeSelectListFieldModel",["m2m","o2m","mbm"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60});let gS=Symbol("popupBeforeCloseNext");function gw(e,t){let l=e?[e]:[],o=new Set;for(;l.length;){let e=l.pop();!(null==e?void 0:e.uid)||o.has(e.uid)||(o.add(e.uid),t(e),Object.values(e.subModels||{}).forEach(e=>{Array.isArray(e)?l.push(...e):e&&"object"==typeof e&&l.push(e)}))}}function gF(e,t){let l,o=e.beforeClose;for(;o;){if(o===t){l?l[gS]=o[gS]:e.beforeClose=o[gS];break}if(!(gS in o))break;l=o,o=o[gS]}}function gk(e){let{view:t,model:l,modal:o,t:i}=e,n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],o=e.length?new Set(e):null;return gw(l,e=>{var l,i;e.uid&&(null==(i=e.getUserModifiedFields)||null==(l=i.call(e))?void 0:l.size)&&!(null==o?void 0:o.has(e.uid))&&t.push(e.uid)}),t},r=e=>{if(!e.length)return;let t=new Set(e);gw(l,e=>{if(e.uid&&t.has(e.uid)){var l;null==(l=e.resetUserModifiedFields)||l.call(e)}})},a=async e=>{let t=e.force?[]:n(e.ignoredDirtyFormModelUids);if(t.length&&!await o.confirm({title:i("Unsaved changes"),content:i("Are you sure you don't want to save?"),okText:i("Confirm"),cancelText:i("Cancel")}))return!1;let l=a[gS],s=t.length?Array.from(new Set([...e.ignoredDirtyFormModelUids||[],...t])):e.ignoredDirtyFormModelUids;return await (null==l?void 0:l({...e,ignoredDirtyFormModelUids:s}))!==!1&&(t.length&&r(t),!0)};return a[gS]=t.beforeClose,t.beforeClose=a,()=>{gF(t,a)}}function gC(e){let{targetModel:t,children:l}=e,o=t.context.t,i=t,r=i.context.collectionField.collection,a=r.dataSource,s=i.context.collectionField.name,d=(0,n.useMemo)(()=>{let e=`${o(a.displayName||a.key)} > `,t=r?`${o(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${s}`},[r,a.displayName,a.key,s,o]),{actionName:u}=i.forbidden||{},c=(0,n.useMemo)(()=>o('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:o((0,g.capitalize)(u))}).replaceAll("&gt;",">"),[u,d,o]);return(0,m.jsx)(x.Tooltip,{title:c,children:l})}function gA(e){let{options:t,fieldModel:l}=e,o=(0,f.useFlowViewContext)(),{data:i,loading:r}=(0,iH.useRequest)(async()=>{let e=await o.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:o,skipSave:!o.flowSettingsEnabled});return e.context.defineProperty("associationModel",{value:l.context.associationModel}),e.actionName=t.scene,e},{refreshDeps:[o,t]});return((0,n.useEffect)(()=>{if(null==i?void 0:i.uid)return gk({view:o.view,model:i,modal:o.modal,t:o.t})},[o,i]),!r&&(null==i?void 0:i.uid))?(0,m.jsx)(f.FlowModelRenderer,{model:i,fallback:(0,m.jsx)(iq,{style:{margin:16}})}):(0,m.jsx)(iq,{style:{margin:16}})}function gP(e){let{model:t,scene:l="update"}=e,o=(0,f.useFlowContext)(),{Header:i,type:n}=o.view;t._closeView=o.view.close;let r="create"===l?o.t("Add new"):o.t("Edit");return(0,m.jsxs)("div",{children:[(0,m.jsx)(i,{title:"dialog"===n?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:r}):r}),(0,m.jsx)(gA,{options:{parentId:o.view.inputArgs.parentId,subKey:`${l}.edit-form-grid-block`,async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel",scene:l},fieldModel:t})]})}class gT extends aK.S0{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(gC,{targetModel:this,children:(0,m.jsx)(x.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(x.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(x.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}}gT.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{use:"aclCheck",async handler(e,t){var l,o;let i=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,actionName:e.actionName,fields:[e.collectionField.name]});e.actionName&&(i||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}});class gI extends gT{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(aK._T,{collection:this.context.collectionField.targetCollection,children:(0,m.jsx)(x.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(x.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(x.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}getAclActionName(){return"update"}async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("openView",{event:e,...this.getInputArgs()})})}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.defaultPopupTitle=(0,f.tExpr)("Edit"),this.defaultProps={type:"link",title:(0,f.tExpr)("Edit")}}}function gL(e,t){if(!t)return null;if(Array.isArray(t)){let l=t.map(t=>null==e?void 0:e[t]);return l.some(e=>null==e)?null:l.join("__")}let l=null==e?void 0:e[t];return null==l?null:String(l)}gI.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{async handler(e,t){var l,o;let i=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.target,actionName:e.actionName});e.actionName&&(i||e.record.__is_new__||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}}),gI.define({label:(0,f.tExpr)("Edit")}),gI.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,i,n,r,a,s,d,u,c,p,h,f;let g={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},v=e.inputArgs.mode||t.mode||"drawer",y=e.inputArgs.size||t.size||"medium",b=null==e?void 0:e.associationModel,x=(null==e?void 0:e.item)??(null==b||null==(l=b.context)?void 0:l.item)??{value:("function"==typeof(null==b||null==(o=b.context)?void 0:o.getFormValues)?b.context.getFormValues():null==b||null==(i=b.context)?void 0:i.formValues)??(null==b||null==(n=b.context)?void 0:n.record)},M=(null==e||null==(r=e.getPropertyOptions)?void 0:r.call(e,"item"))??(null==b||null==(s=b.context)||null==(a=s.getPropertyOptions)?void 0:a.call(s,"item")),_=Array.isArray(null==b||null==(d=b.props)?void 0:d.value)?b.props.value.length:void 0,S=(()=>{try{var t,l;let o=null==b||null==(t=b.props)?void 0:t.value,i=null==e?void 0:e.record;if(!Array.isArray(o)||!i)return;let n=o.indexOf(i);if(n>=0)return n;if(null!=i.__index__){let e=o.findIndex(e=>(null==e?void 0:e.__index__)===i.__index__);if(e>=0)return e}let r=null==e||null==(l=e.collection)?void 0:l.filterTargetKey;if(Array.isArray(r)){if(!r.every(e=>(null==i?void 0:i[e])!=null))return;let e=o.findIndex(e=>r.every(t=>(null==e?void 0:e[t])===(null==i?void 0:i[t])));return e>=0?e:void 0}if(r){let e=null==i?void 0:i[r];if(null==e)return;let t=o.findIndex(t=>(null==t?void 0:t[r])===e);return t>=0?t:void 0}return}catch(e){return}})(),w=null==(u=e.collectionField)?void 0:u.resourceName,F=(null==x?void 0:x.value)?null==(h=e.collectionField)||null==(p=h.collection)||null==(c=p.getFilterByTK)?void 0:c.call(p,x.value):void 0,k=uj(e,e.inputArgs);e.viewer.open({type:v,width:g[v][y],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(f=e.collectionField)?void 0:f.target,...w&&null!=F?{associationName:w,sourceId:F}:{},collectionField:e.collectionField,record:e.record,parentItem:x,parentItemMeta:null==M?void 0:M.meta,parentItemResolver:null==M?void 0:M.resolveOnServer,itemIndex:S,itemLength:_,openerUids:k},content:()=>(0,m.jsx)(gP,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===v?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}});let gR=n.default.memo(e=>{let t=(0,f.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,m.jsx)(f.DndProvider,{onDragEnd:l,children:(0,m.jsx)("thead",{...e})})}),gj=(0,_formily_reactive_react__rspack_import_74.observer)(e=>{let{className:t,title:l,editable:o,width:i,record:r,recordIndex:a,dataIndex:s,children:d,model:u,...c}=e,p=(0,n.useRef)(null),h=(0,f.useFlowModel)();return o?(0,m.jsxs)("td",{ref:p,...c,className:(0,m$.default)(t,(0,A.css)`
1158
+ `),changeOnSelect:!0,options:u||p,onDropdownVisibleChange:t=>{e.onDropdownVisibleChange(t),t&&setTimeout(()=>{w()},100)},fieldNames:d,showSearch:!0,onSearch:e=>a(e),displayRender:S,onChange:(t,l)=>{var o,i;let n=(null==e||null==(i=e.collectionField)||null==(o=i.targetCollection)?void 0:o.template)==="tree";s||n?r(gm(l)):r((0,g.last)(l))},value:M.length?M:void 0})};class gy extends gg{render(){return(0,m.jsx)(gv,{...this.props,resource:this.resource,collectionField:this.collectionField,underDefaultValueConfig:"CascadeSelectFieldModel"!==this.use})}}class gb extends gg{render(){return(0,m.jsx)(gf,{name:this.props.name,disabled:this.props.disabled,options:this.props.options,onDropdownVisibleChange:this.props.onDropdownVisibleChange,onPopupScroll:this.props.onPopupScroll,fieldNames:this.props.fieldNames,showSearch:!0,onSearch:e=>this.props.onSearch(e),onChange:e=>{this.props.onChange(e)},collectionField:this.collectionField,value:(0,g.castArray)(this.props.value).filter(Boolean),underDefaultValueConfig:"CascadeSelectListFieldModel"!==this.use})}}let gx={page:1,pageSize:40,loading:!1,hasMore:!0};async function gM(e,t){try{var l,o,i,n;let t=e.model.collectionField.targetCollection,r=e.model.props.fieldNames.label,a=t.getField(r),s=a.getInterfaceOptions(),d="string"===a.type||"string"===a.dataType?"$includes":(null==s||null==(i=s.filterable)||null==(o=i.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(n=e.inputArgs.searchText)?void 0:n.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(r):(c.setPage(1),c.addFilterGroup(r,{[p]:u})),await c.refresh();let m=c.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(m),m.length<gx.pageSize?gx.hasMore=!1:(gx.hasMore=!0,gx.page++),e.model.setProps({searchText:u})}catch(t){console.error("CascadeSelectFieldModel search flow error:",t),e.model.setDataSource([])}}gg.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e){let t=e.model.props.fieldNames.label;e.model.onDropdownVisibleChange=l=>{l?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(t),gx.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})},e.model.onLoadData=async t=>{let l=t[t.length-1];e.model.dispatchEvent("loadChildren",{targetOption:l,apiClient:e.app.apiClient})}}}}}),gg.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{loadData:{async handler(e){let t=e.model.resource;e.model.getDataSource(),t.setPage(1),t.setRequestParameters({tree:!0}),await e.model.applyFlow("selectSettings"),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}});e.model.setDataSource(l),gx.hasMore=l.length>=gx.pageSize,gx.page=2}}}}),gg.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{loadData:{async handler(e){var t;let{scrollTop:l,scrollHeight:o,clientHeight:i}=(null==(t=e.inputArgs)?void 0:t.event).target;if(!(l+i<o-20)&&!gx.loading&&gx.hasMore){gx.loading=!0;try{let t=e.model.resource;t.setPage(gx.page),await t.refresh();let l=t.getData().map(e=>{var t;return{...e,isLeaf:!(null==(t=e.children)?void 0:t.length),children:e.children}}),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<gx.pageSize?gx.hasMore=!1:gx.page++}finally{gx.loading=!1}}}}}});let g_=(0,g.debounce)(gM,500);gg.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:g_}}}),gg.registerFlow({key:"cascadeSelectSettings",sort:200,steps:{init:{handler(e){let t=e.createResource(f.MultiRecordResource),{target:l,dataSourceKey:o}=e.model.context.collectionField;t.setDataSourceKey(o),t.setResourceName(l),t.setPageSize(gx.pageSize),e.model.resource=t}}}}),gg.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Cascader select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"}}}),gy.define({label:(0,f.tExpr)("Cascader")}),gb.define({label:(0,f.tExpr)("Cascader")}),f.EditableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60}),f.FilterableItemModel.bindModelToInterface("CascadeSelectFieldModel",["m2o","o2o","oho","obo"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60,defaultProps:(e,t)=>({fieldNames:gn(t)})}),f.EditableItemModel.bindModelToInterface("CascadeSelectListFieldModel",["m2m","o2m","mbm"],{when:(e,t)=>{var l;return(null==(l=t.targetCollection)?void 0:l.template)==="tree"},isDefault:!0,order:60});let gS=Symbol("popupBeforeCloseNext");function gw(e,t){let l=e?[e]:[],o=new Set;for(;l.length;){let e=l.pop();!(null==e?void 0:e.uid)||o.has(e.uid)||(o.add(e.uid),t(e),Object.values(e.subModels||{}).forEach(e=>{Array.isArray(e)?l.push(...e):e&&"object"==typeof e&&l.push(e)}))}}function gF(e,t){let l,o=e.beforeClose;for(;o;){if(o===t){l?l[gS]=o[gS]:e.beforeClose=o[gS];break}if(!(gS in o))break;l=o,o=o[gS]}}function gk(e){let{view:t,model:l,modal:o,t:i}=e,n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],o=e.length?new Set(e):null;return gw(l,e=>{var l,i;e.uid&&(null==(i=e.getUserModifiedFields)||null==(l=i.call(e))?void 0:l.size)&&!(null==o?void 0:o.has(e.uid))&&t.push(e.uid)}),t},r=e=>{if(!e.length)return;let t=new Set(e);gw(l,e=>{if(e.uid&&t.has(e.uid)){var l;null==(l=e.resetUserModifiedFields)||l.call(e)}})},a=async e=>{let t=e.force?[]:n(e.ignoredDirtyFormModelUids);if(t.length&&!await o.confirm({title:i("Unsaved changes"),content:i("Are you sure you don't want to save?"),okText:i("Confirm"),cancelText:i("Cancel")}))return!1;let l=a[gS],s=t.length?Array.from(new Set([...e.ignoredDirtyFormModelUids||[],...t])):e.ignoredDirtyFormModelUids;return await (null==l?void 0:l({...e,ignoredDirtyFormModelUids:s}))!==!1&&(t.length&&r(t),!0)};return a[gS]=t.beforeClose,t.beforeClose=a,()=>{gF(t,a)}}function gC(e){let{targetModel:t,children:l}=e,o=t.context.t,i=t,r=i.context.collectionField.collection,a=r.dataSource,s=i.context.collectionField.name,d=(0,n.useMemo)(()=>{let e=`${o(a.displayName||a.key)} > `,t=r?`${o(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${s}`},[r,a.displayName,a.key,s,o]),{actionName:u}=i.forbidden||{},c=(0,n.useMemo)(()=>o('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:o((0,g.capitalize)(u))}).replaceAll("&gt;",">"),[u,d,o]);return(0,m.jsx)(x.Tooltip,{title:c,children:l})}function gA(e){let{options:t,fieldModel:l}=e,o=(0,f.useFlowViewContext)(),{data:i,loading:r}=(0,iH.useRequest)(async()=>{let e=await o.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:o,skipSave:!o.flowSettingsEnabled});return e.context.defineProperty("associationModel",{value:l.context.associationModel}),e.actionName=t.scene,e},{refreshDeps:[o,t]});return((0,n.useEffect)(()=>{if(null==i?void 0:i.uid)return gk({view:o.view,model:i,modal:o.modal,t:o.t})},[o,i]),!r&&(null==i?void 0:i.uid))?(0,m.jsx)(f.FlowModelRenderer,{model:i,fallback:(0,m.jsx)(iq,{style:{margin:16}})}):(0,m.jsx)(iq,{style:{margin:16}})}function gP(e){let{model:t,scene:l="update"}=e,o=(0,f.useFlowContext)(),{Header:i,type:n}=o.view;t._closeView=o.view.close;let r="create"===l?o.t("Add new"):o.t("Edit");return(0,m.jsxs)("div",{children:[(0,m.jsx)(i,{title:"dialog"===n?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:r}):r}),(0,m.jsx)(gA,{options:{parentId:o.view.inputArgs.parentId,subKey:`${l}.edit-form-grid-block`,async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel",scene:l},fieldModel:t})]})}class gT extends aK.S0{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(gC,{targetModel:this,children:(0,m.jsx)(x.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(x.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(x.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}}gT.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{use:"aclCheck",async handler(e,t){var l,o;let i=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,actionName:e.actionName,fields:[e.collectionField.name]});e.actionName&&(i||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}});class gI extends gT{renderHiddenInConfig(){let e=this.props,t=this.getIcon()?(0,m.jsx)(et.In,{type:this.getIcon()}):void 0;return this.forbidden?(0,m.jsx)(aK._T,{collection:this.context.collectionField.targetCollection,children:(0,m.jsx)(x.Button,{...e,icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})}):(0,m.jsx)(x.Tooltip,{title:this.context.t("The button is hidden and only visible when the UI Editor is active"),children:(0,m.jsx)(x.Button,{...e,onClick:this.onClick.bind(this),icon:t,style:{opacity:"0.3"},children:e.children||this.getTitle()})})}getAclActionName(){return"update"}async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("openView",{event:e,...this.getInputArgs()})})}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.defaultPopupTitle=(0,f.tExpr)("Edit"),this.defaultProps={type:"link",title:(0,f.tExpr)("Edit")}}}function gL(e,t){if(!t)return null;if(Array.isArray(t)){let l=t.map(t=>null==e?void 0:e[t]);return l.some(e=>null==e)?null:l.join("__")}let l=null==e?void 0:e[t];return null==l?null:String(l)}gI.registerFlow({key:"buttonAclSettings",steps:{aclCheck:{async handler(e,t){var l,o;let i=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.target,actionName:e.actionName});e.actionName&&(i||e.record.__is_new__||(e.model.hidden=!0,e.model.forbidden={actionName:e.actionName},e.exitAll()))}}}}),gI.define({label:(0,f.tExpr)("Edit")}),gI.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,i,n,r,a,s,d,u,c,p,h,f;let g={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},v=e.inputArgs.mode||t.mode||"drawer",y=e.inputArgs.size||t.size||"medium",b=null==e?void 0:e.associationModel,x=(null==e?void 0:e.item)??(null==b||null==(l=b.context)?void 0:l.item)??{value:("function"==typeof(null==b||null==(o=b.context)?void 0:o.getFormValues)?b.context.getFormValues():null==b||null==(i=b.context)?void 0:i.formValues)??(null==b||null==(n=b.context)?void 0:n.record)},M=(null==e||null==(r=e.getPropertyOptions)?void 0:r.call(e,"item"))??(null==b||null==(s=b.context)||null==(a=s.getPropertyOptions)?void 0:a.call(s,"item")),_=Array.isArray(null==b||null==(d=b.props)?void 0:d.value)?b.props.value.length:void 0,S=(()=>{try{var t,l;let o=null==b||null==(t=b.props)?void 0:t.value,i=null==e?void 0:e.record;if(!Array.isArray(o)||!i)return;let n=o.indexOf(i);if(n>=0)return n;if(null!=i.__index__){let e=o.findIndex(e=>(null==e?void 0:e.__index__)===i.__index__);if(e>=0)return e}let r=null==e||null==(l=e.collection)?void 0:l.filterTargetKey;if(Array.isArray(r)){if(!r.every(e=>(null==i?void 0:i[e])!=null))return;let e=o.findIndex(e=>r.every(t=>(null==e?void 0:e[t])===(null==i?void 0:i[t])));return e>=0?e:void 0}if(r){let e=null==i?void 0:i[r];if(null==e)return;let t=o.findIndex(t=>(null==t?void 0:t[r])===e);return t>=0?t:void 0}return}catch(e){return}})(),w=null==(u=e.collectionField)?void 0:u.resourceName,F=(null==x?void 0:x.value)?null==(h=e.collectionField)||null==(p=h.collection)||null==(c=p.getFilterByTK)?void 0:c.call(p,x.value):void 0,k=uj(e,e.inputArgs);e.viewer.open({type:v,width:g[v][y],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(f=e.collectionField)?void 0:f.target,...w&&null!=F?{associationName:w,sourceId:F}:{},collectionField:e.collectionField,record:e.record,parentItem:x,parentItemMeta:null==M?void 0:M.meta,parentItemResolver:null==M?void 0:M.resolveOnServer,itemIndex:S,itemLength:_,openerUids:k},content:()=>(0,m.jsx)(gP,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===v?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}});let gR=n.default.memo(e=>{let t=(0,f.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,m.jsx)(f.DndProvider,{onDragEnd:l,children:(0,m.jsx)("thead",{...e})})}),gj=(0,_formily_reactive_react__rspack_import_74.observer)(e=>{let{className:t,title:l,editable:o,width:i,record:r,recordIndex:a,dataIndex:s,children:d,model:u,...c}=e,p=(0,n.useRef)(null),h=(0,f.useFlowModel)();return o?(0,m.jsxs)("td",{ref:p,...c,className:(0,m$.default)(t,(0,A.css)`
1159
1159
  .edit-icon {
1160
1160
  position: absolute;
1161
1161
  display: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/client-v2",
3
- "version": "2.2.39",
3
+ "version": "2.2.41",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.mjs",
@@ -27,11 +27,11 @@
27
27
  "@formily/antd-v5": "1.2.3",
28
28
  "@formily/react": "^2.2.27",
29
29
  "@formily/shared": "^2.2.27",
30
- "@nocobase/evaluators": "2.2.39",
31
- "@nocobase/flow-engine": "2.2.39",
32
- "@nocobase/sdk": "2.2.39",
33
- "@nocobase/shared": "2.2.39",
34
- "@nocobase/utils": "2.2.39",
30
+ "@nocobase/evaluators": "2.2.41",
31
+ "@nocobase/flow-engine": "2.2.41",
32
+ "@nocobase/sdk": "2.2.41",
33
+ "@nocobase/shared": "2.2.41",
34
+ "@nocobase/utils": "2.2.41",
35
35
  "ahooks": "^3.7.2",
36
36
  "antd": "5.24.2",
37
37
  "antd-style": "3.7.1",
@@ -49,5 +49,5 @@
49
49
  "react-router-dom": "^6.30.1",
50
50
  "zxing-wasm": "^3.1.3"
51
51
  },
52
- "gitHead": "821f103dc70022fa088524ccd741d5715597d51a"
52
+ "gitHead": "1590d93a9f16dd5b49aedf1b47f7860bbad0ce91"
53
53
  }
@@ -751,7 +751,10 @@ async function originalHandler(ctx, params) {
751
751
 
752
752
  const targetInterface = targetLabelField.getInterfaceOptions();
753
753
 
754
- const operator = targetInterface?.filterable?.operators?.[0]?.value || '$includes';
754
+ const operator =
755
+ targetLabelField.type === 'string' || targetLabelField.dataType === 'string'
756
+ ? '$includes'
757
+ : targetInterface?.filterable?.operators?.[0]?.value || '$includes';
755
758
 
756
759
  const searchText = ctx.inputArgs.searchText?.trim();
757
760
  const resource = ctx.model.resource;
@@ -590,7 +590,10 @@ async function originalHandler(ctx, params) {
590
590
 
591
591
  const targetInterface = targetLabelField.getInterfaceOptions();
592
592
 
593
- const operator = targetInterface?.filterable?.operators?.[0]?.value || '$includes';
593
+ const operator =
594
+ targetLabelField.type === 'string' || targetLabelField.dataType === 'string'
595
+ ? '$includes'
596
+ : targetInterface?.filterable?.operators?.[0]?.value || '$includes';
594
597
 
595
598
  const searchText = ctx.inputArgs.searchText?.trim();
596
599
 
@@ -0,0 +1,113 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ import { CollectionField } from '@nocobase/flow-engine';
11
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
12
+ import '../../../index';
13
+ import { createTypedFilterable } from '../../../../../collection-manager/filter-operators';
14
+ import { CascadeSelectInnerFieldModel } from '../CascadeSelectFieldModel';
15
+ import { RecordSelectFieldModel } from '../RecordSelectFieldModel';
16
+
17
+ function createContext(fieldOptions: Record<string, unknown>, searchText = ' 3 ') {
18
+ const field = new CollectionField({ name: 'display_name', ...fieldOptions });
19
+ const filterable = createTypedFilterable<{ dataType?: string }>(
20
+ [
21
+ { types: ['boolean'], operators: 'boolean' },
22
+ { types: ['string'], operators: 'string' },
23
+ { types: ['integer'], operators: 'number' },
24
+ ],
25
+ (meta) => meta.dataType || 'string',
26
+ );
27
+ vi.spyOn(field, 'getInterfaceOptions').mockReturnValue({ filterable });
28
+ const records = [{ id: 3, display_name: '3 Jackson Hughes' }];
29
+ const resource = {
30
+ setPage: vi.fn(),
31
+ addFilterGroup: vi.fn(),
32
+ removeFilterGroup: vi.fn(),
33
+ refresh: vi.fn().mockResolvedValue(undefined),
34
+ getData: vi.fn(() => records),
35
+ };
36
+ return {
37
+ field,
38
+ inputArgs: { searchText },
39
+ model: {
40
+ collectionField: { targetCollection: { getField: vi.fn(() => field) } },
41
+ props: { fieldNames: { label: 'display_name', value: 'id' } },
42
+ resource,
43
+ setDataSource: vi.fn(),
44
+ setProps: vi.fn(),
45
+ },
46
+ };
47
+ }
48
+
49
+ describe.each([
50
+ { name: 'RecordSelect', model: RecordSelectFieldModel, searchGroup: '__search__display_name' },
51
+ { name: 'CascadeSelect', model: CascadeSelectInnerFieldModel, searchGroup: 'display_name' },
52
+ ])('$name search', ({ model, searchGroup }) => {
53
+ beforeEach(() => vi.useFakeTimers());
54
+ afterEach(() => {
55
+ vi.clearAllTimers();
56
+ vi.useRealTimers();
57
+ vi.restoreAllMocks();
58
+ });
59
+
60
+ async function search(ctx: ReturnType<typeof createContext>) {
61
+ const handler = model.globalFlowRegistry.getFlow('searchSettings').getStep('step1').serialize().handler as (
62
+ ctx: ReturnType<typeof createContext>,
63
+ params: Record<string, unknown>,
64
+ ) => unknown;
65
+ handler(ctx, {});
66
+ await vi.advanceTimersByTimeAsync(500);
67
+ }
68
+
69
+ it.each([{ type: 'formula', dataType: 'string' }, { type: 'string' }])(
70
+ 'uses partial text matching for $type labels',
71
+ async (options) => {
72
+ const ctx = createContext(options);
73
+
74
+ await search(ctx);
75
+
76
+ expect(ctx.model.resource.addFilterGroup).toHaveBeenCalledWith(searchGroup, { 'display_name.$includes': '3' });
77
+ expect(ctx.model.resource.setPage).toHaveBeenCalledWith(1);
78
+ expect(ctx.model.resource.refresh).toHaveBeenCalledOnce();
79
+ expect(ctx.model.setDataSource).toHaveBeenCalledWith([
80
+ expect.objectContaining({ display_name: '3 Jackson Hughes' }),
81
+ ]);
82
+ expect(ctx.model.setProps).toHaveBeenCalledWith({ searchText: '3' });
83
+ },
84
+ );
85
+
86
+ it('preserves the interface operator for non-string labels', async () => {
87
+ const ctx = createContext({ type: 'integer' });
88
+ vi.spyOn(ctx.field, 'getInterfaceOptions').mockReturnValue({ filterable: { operators: [{ value: '$eq' }] } });
89
+
90
+ await search(ctx);
91
+
92
+ expect(ctx.model.resource.addFilterGroup).toHaveBeenCalledWith(searchGroup, { 'display_name.$eq': '3' });
93
+ });
94
+
95
+ it('falls back to partial text matching without an interface', async () => {
96
+ const ctx = createContext({ type: 'string' });
97
+ vi.spyOn(ctx.field, 'getInterfaceOptions').mockReturnValue(undefined);
98
+
99
+ await search(ctx);
100
+
101
+ expect(ctx.model.resource.addFilterGroup).toHaveBeenCalledWith(searchGroup, { 'display_name.$includes': '3' });
102
+ });
103
+
104
+ it('removes the search filter when the search is cleared', async () => {
105
+ const ctx = createContext({ type: 'formula', dataType: 'string' }, ' ');
106
+
107
+ await search(ctx);
108
+
109
+ expect(ctx.model.resource.removeFilterGroup).toHaveBeenCalledWith(searchGroup);
110
+ expect(ctx.model.resource.addFilterGroup).not.toHaveBeenCalled();
111
+ expect(ctx.model.resource.refresh).toHaveBeenCalledOnce();
112
+ });
113
+ });