@nocobase/client-v2 2.3.0-beta.10 → 2.3.0-beta.11

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
@@ -1101,7 +1101,7 @@ ctx.render(\`
1101
1101
  white-space: nowrap;
1102
1102
  width: calc(${this.props.width}px - 16px);
1103
1103
  opacity: ${this.hidden?"0.3":"1"};
1104
- `,children:[this.props.required&&(0,m.jsx)("span",{style:{color:"#ff4d4f",marginRight:4,userSelect:"none",fontFamily:"SimSun, sans-serif"},children:"*"}),this.props.title]})})}),t=this.render();return{...this.props,ellipsis:!0,title:this.props.tooltip?(0,m.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,m.jsx)(b.Tooltip,{title:this.props.tooltip,children:(0,m.jsx)(to.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({record:e,recordIndex:t,key:t,width:this.props.width,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,model:this}),hidden:this.hidden&&!this.context.flowSettingsEnabled,render:e=>{let{record:l,rowIndex:o}=e||{};return(0,m.jsx)(f.FlowModelProvider,{model:this,children:(0,m.jsx)(__rspack_external_react_error_boundary_ac55bb72.ErrorBoundary,{FallbackComponent:f.FlowErrorFallback,children:(()=>{let n=this.__autoFlowError;if(n)throw n;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,m.jsx)(fo,{targetModel:this}):(0,m.jsx)(b.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,m.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,m.jsx)(mW,{collection:this.parent.context.collectionField.targetCollection})})()})})}}}renderItem(){return e=>{var t,l,o,n,i,r,a,s,d,u,c,p,h,f,g;let{value:v,id:y,rowIdx:_,record:b,parentFieldIndex:x,parentItem:M}=e||{},w=x??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldIndex)??(null==(o=this.context)?void 0:o.fieldIndex),S=Array.isArray(w)?w:[],k=S.length?S.join("|"):"root",F=(null==(i=this.parent)||null==(n=i.collection)?void 0:n.filterTargetKey)??(null==(s=this.parent)||null==(a=s.context)||null==(r=a.collection)?void 0:r.filterTargetKey),C=(0,at.r5)(b,F)??`row:${String(_)}`,A=`row:${k}:${C}:${String(_)}`,P=this.subModels.field,T=[A,this.props.pattern,this.props.readPretty,this.props.titleField,this.props.__displayFieldRefreshKey,null==P?void 0:P.uid,null==P?void 0:P.use,null==P||null==(d=P.constructor)?void 0:d.name,null==P||null==(u=P.props)?void 0:u.clickToOpen,null==P||null==(c=P.props)?void 0:c.displayStyle,null==P||null==(p=P.props)?void 0:p.overflowMode,null==P||null==(h=P.props)?void 0:h.titleField,null==P||null==(g=P.props)||null==(f=g.fieldNames)?void 0:f.label].filter(e=>null!=e).join(":"),j=(()=>{var e,t,l,o,n,i,r,a;let s=this.createFork({},A);s.context.defineProperty("subTableRowFork",{value:!0});let d=(null==(e=this.parent)?void 0:e.fieldPath)??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldPath)??(null==(n=this.parent)||null==(o=n.props)?void 0:o.name),u=(null==(a=this.parent)||null==(r=a.context)||null==(i=r.collectionField)?void 0:i.name)||String(d||"").split(".").filter(Boolean).pop(),c=Number(_);u&&Number.isFinite(c)&&s.context.defineProperty("fieldIndex",{value:[...S,`${u}:${c}`]});let p=()=>{var e,t,l,o;return fc((null==(e=s.context)?void 0:e.form)||(null==(o=this.context)||null==(l=o.blockModel)||null==(t=l.context)?void 0:t.form),s.context.fieldIndex,b)},m=()=>{var e,t;return M??(null==(t=this.parent)||null==(e=t.context)?void 0:e.item)??hE(this.getParentFormValues())},h=hD({valueAccessor:p,parentItemAccessor:m,indexAccessor:()=>Number.isFinite(c)?c:void 0,lengthAccessor:()=>{var e,t;let l=null==(t=this.parent)||null==(e=t.props)?void 0:e.value;return Array.isArray(l)?l.length:void 0}});return s.context.defineProperty("item",{get:h,...this.createRowItemContextPropertyOptions({resolverPropertiesAccessor:p,parentItemAccessor:m,showParentIndex:S.length>0})}),s})();return(0,m.jsx)(f_,{value:v,record:b,rowIdx:_,id:y,parent:this,parentFieldIndex:S,parentItem:M,rowFork:j,memoKey:T,width:this.props.width,commitOnChange:this.hasFormulaColumn||this.hasFormValueDrivenDataScopeColumn})}}}function fx(e,t){return!!e.length&&!(e.length>t.length)&&e.every((e,l)=>e===t[l])}function fM(e,t){return fx(e,t)||fx(t,e)}function fw(e){let t=Array.isArray(e)?e:"string"==typeof e?[e]:null;if(!t)return null;let l=t.flatMap(e=>"number"==typeof e?[e]:"string"!=typeof e?[]:(0,rJ.EA)(e).filter(e=>"object"!=typeof e));return l.length?l:null}function fS(e,t){let l=fw(e);return!!l&&(Array.isArray(t)?t:[]).some(e=>{let t=fw(e);return!!t&&fM(l,t)})}function fk(e){let{t}=(0,v.useTranslation)(),{onChange:l,columns:o,disabled:n,allowAddNew:r,components:a,allowSelectExistingRecord:s,onSelectExitRecordClick:d,allowDisassociation:u,pageSize:c,allowCreate:p,isConfigMode:h,parentFieldIndex:f,parentItem:g,resetPage:y,filterTargetKey:_="id",getCurrentValue:x,fieldPathArray:M,formValuesChangeEmitter:w,onResetFieldValue:S}=e,[k,F]=(0,i.useState)(1),[C,P]=(0,i.useState)(c),[,T]=(0,i.useState)(0),j=x(),I=(0,i.useMemo)(()=>(0,at.$4)(j),[j]),L=i.default.useCallback(e=>(0,at.r5)(e,_),[_]);(0,i.useEffect)(()=>{P(c)},[c]),(0,i.useEffect)(()=>{y&&F(1)},[y]),(0,i.useEffect)(()=>{if(!(null==w?void 0:w.on)||!(null==w?void 0:w.off))return;let e=e=>{fS(M,null==e?void 0:e.changedPaths)&&T(e=>e+1)};return w.on("formValuesChange",e),()=>{w.off("formValuesChange",e)}},[M,w]),(0,i.useEffect)(()=>{if(!(null==w?void 0:w.on)||!(null==w?void 0:w.off)||!S)return;let e=()=>{S(),T(e=>e+1)};return w.on("onFieldReset",e),()=>{w.off("onFieldReset",e)}},[w,S]);let R=i.default.useCallback(e=>null==l?void 0:l((0,at.$4)(e)),[l]),D=i.default.useCallback(()=>(0,at.$4)(x()),[x]);(0,i.useEffect)(()=>{I!==j&&R(I)},[R,I,j]);let E=(0,i.useMemo)(()=>({style:{position:"absolute",right:"0px",bottom:"0px"},current:k,pageSize:C,total:I.length,onChange:(e,t)=>{F(e),P(t)},showSizeChanger:!0,showTotal:e=>t("Total {{count}} items",{count:e})}),[k,C,I.length,t]),Y=()=>{if(!1===p)return;let e={__is_new__:!0};o.forEach(t=>{e[t.dataIndex]=void 0});let t=[...D(),e];F(Math.ceil(t.length/C)),R(t)},N=e=>{let t=[...D()];t.splice(e,1);let l=Math.ceil(t.length/C);F(k>l?l:k),R(t)},O=(e,t,l)=>{R(D().map((o,n)=>n===e?{...o,[t]:l}:o))},B=o.map(e=>({...e,render:(t,l,o)=>{let n=(k-1)*C+o,i=L(l)??`row:${n}`,r=`${i}:${n}`,a=e.dataIndex??e.key??"cell";if(e.render)return e.render({record:l,rowIdx:n,id:`field-${String(a)}-${r}`,value:t,parentFieldIndex:f,parentItem:g,onChange:t=>{var l;O(n,e.dataIndex,(null==t||null==(l=t.target)?void 0:l.value)??t)},"aria-describedby":`field-${String(a)}-${r}`})}})).concat([!n&&{title:"",key:"delete",width:50,align:"center",fixed:"right",render:(e,t,l)=>{let o=(k-1)*C+l;if(u||t.__is_new__||t.__is_stored__)return(0,m.jsx)("div",{onMouseDown:e=>{var t;let l=document.activeElement;!l||e.currentTarget.contains(l)||null==(t=l.blur)||t.call(l)},onClick:()=>{setTimeout(()=>{N(o)})},children:(0,m.jsx)(to.CloseOutlined,{style:{cursor:"pointer",color:"gray"}})})}}]).filter(Boolean),V=(0,i.useMemo)(()=>{if(!I.length)return[];let e=(k-1)*C;return I.slice(e,e+C)},[I,k,C]);return(0,m.jsx)(b.Form.Item,{children:(0,m.jsx)(b.Table,{dataSource:V,columns:B,rowKey:e=>L(e)??"",tableLayout:"fixed",scroll:{x:"max-content"},pagination:E,locale:{emptyText:(0,m.jsx)("span",{children:n?t("No data"):r&&s?t("Please add or select record"):r?t("Please add record"):s?t("Please select record"):t("No data")})},components:a??{},className:(0,A.css)`
1104
+ `,children:[this.props.required&&(0,m.jsx)("span",{style:{color:"#ff4d4f",marginRight:4,userSelect:"none",fontFamily:"SimSun, sans-serif"},children:"*"}),this.props.title]})})}),t=this.render();return{...this.props,ellipsis:!0,title:this.props.tooltip?(0,m.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,m.jsx)(b.Tooltip,{title:this.props.tooltip,children:(0,m.jsx)(to.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({record:e,recordIndex:t,key:t,width:this.props.width,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,model:this}),hidden:this.hidden&&!this.context.flowSettingsEnabled,render:e=>{let{record:l,rowIndex:o}=e||{};return(0,m.jsx)(f.FlowModelProvider,{model:this,children:(0,m.jsx)(__rspack_external_react_error_boundary_ac55bb72.ErrorBoundary,{FallbackComponent:f.FlowErrorFallback,children:(()=>{let n=this.__autoFlowError;if(n)throw n;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,m.jsx)(fo,{targetModel:this}):(0,m.jsx)(b.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,m.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,m.jsx)(mW,{collection:this.parent.context.collectionField.targetCollection})})()})})}}}renderItem(){return e=>{var t,l,o,n,i,r,a,s,d,u,c,p,h,f,g;let{value:v,id:y,rowIdx:_,record:b,parentFieldIndex:x,parentItem:M}=e||{},w=x??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldIndex)??(null==(o=this.context)?void 0:o.fieldIndex),S=Array.isArray(w)?w:[],k=S.length?S.join("|"):"root",F=(null==(i=this.parent)||null==(n=i.collection)?void 0:n.filterTargetKey)??(null==(s=this.parent)||null==(a=s.context)||null==(r=a.collection)?void 0:r.filterTargetKey),C=(0,at.r5)(b,F)??`row:${String(_)}`,A=`row:${k}:${C}:${String(_)}`,P=this.subModels.field,T=[A,this.props.pattern,this.props.readPretty,this.props.titleField,this.props.__displayFieldRefreshKey,null==P?void 0:P.uid,null==P?void 0:P.use,null==P||null==(d=P.constructor)?void 0:d.name,null==P||null==(u=P.props)?void 0:u.clickToOpen,null==P||null==(c=P.props)?void 0:c.displayStyle,null==P||null==(p=P.props)?void 0:p.overflowMode,null==P||null==(h=P.props)?void 0:h.titleField,null==P||null==(g=P.props)||null==(f=g.fieldNames)?void 0:f.label].filter(e=>null!=e).join(":"),j=(()=>{var e,t,l,o,n,i,r,a;let s=this.createFork({},A);s.context.defineProperty("subTableRowFork",{value:!0});let d=(null==(e=this.parent)?void 0:e.fieldPath)??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldPath)??(null==(n=this.parent)||null==(o=n.props)?void 0:o.name),u=(null==(a=this.parent)||null==(r=a.context)||null==(i=r.collectionField)?void 0:i.name)||String(d||"").split(".").filter(Boolean).pop(),c=Number(_);u&&Number.isFinite(c)&&s.context.defineProperty("fieldIndex",{value:[...S,`${u}:${c}`]});let p=()=>{var e,t,l,o;return fc((null==(e=s.context)?void 0:e.form)||(null==(o=this.context)||null==(l=o.blockModel)||null==(t=l.context)?void 0:t.form),s.context.fieldIndex,b)},m=()=>{var e,t;return M??(null==(t=this.parent)||null==(e=t.context)?void 0:e.item)??hE(this.getParentFormValues())},h=hD({valueAccessor:p,parentItemAccessor:m,indexAccessor:()=>Number.isFinite(c)?c:void 0,lengthAccessor:()=>{var e,t;let l=null==(t=this.parent)||null==(e=t.props)?void 0:e.value;return Array.isArray(l)?l.length:void 0}});return s.context.defineProperty("item",{get:h,...this.createRowItemContextPropertyOptions({resolverPropertiesAccessor:p,parentItemAccessor:m,showParentIndex:S.length>0})}),s})();return(0,m.jsx)(f_,{value:v,record:b,rowIdx:_,id:y,parent:this,parentFieldIndex:S,parentItem:M,rowFork:j,memoKey:T,width:this.props.width,commitOnChange:this.hasFormulaColumn||this.hasFormValueDrivenDataScopeColumn})}}}function fx(e,t){return!!e.length&&!(e.length>t.length)&&e.every((e,l)=>e===t[l])}function fM(e,t){return fx(e,t)||fx(t,e)}function fw(e){let t=Array.isArray(e)?e:"string"==typeof e?[e]:null;if(!t)return null;let l=t.flatMap(e=>"number"==typeof e?[e]:"string"!=typeof e?[]:(0,rJ.EA)(e).filter(e=>"object"!=typeof e));return l.length?l:null}function fS(e,t){let l=fw(e);return!!l&&(Array.isArray(t)?t:[]).some(e=>{let t=fw(e);return!!t&&fM(l,t)})}function fk(e){let{t}=(0,v.useTranslation)(),{token:l}=b.theme.useToken(),{onChange:o,columns:n,disabled:r,allowAddNew:a,components:s,allowSelectExistingRecord:d,onSelectExitRecordClick:u,allowDisassociation:c,pageSize:p,allowCreate:h,isConfigMode:f,parentFieldIndex:g,parentItem:y,resetPage:_,filterTargetKey:x="id",getCurrentValue:M,fieldPathArray:w,formValuesChangeEmitter:S,onResetFieldValue:k}=e,[F,C]=(0,i.useState)(1),[P,T]=(0,i.useState)(p),[,j]=(0,i.useState)(0),I=M(),L=(0,i.useMemo)(()=>(0,at.$4)(I),[I]),R=i.default.useCallback(e=>(0,at.r5)(e,x),[x]);(0,i.useEffect)(()=>{T(p)},[p]),(0,i.useEffect)(()=>{_&&C(1)},[_]),(0,i.useEffect)(()=>{if(!(null==S?void 0:S.on)||!(null==S?void 0:S.off))return;let e=e=>{fS(w,null==e?void 0:e.changedPaths)&&j(e=>e+1)};return S.on("formValuesChange",e),()=>{S.off("formValuesChange",e)}},[w,S]),(0,i.useEffect)(()=>{if(!(null==S?void 0:S.on)||!(null==S?void 0:S.off)||!k)return;let e=()=>{k(),j(e=>e+1)};return S.on("onFieldReset",e),()=>{S.off("onFieldReset",e)}},[S,k]);let D=i.default.useCallback(e=>null==o?void 0:o((0,at.$4)(e)),[o]),E=i.default.useCallback(()=>(0,at.$4)(M()),[M]);(0,i.useEffect)(()=>{L!==I&&D(L)},[D,L,I]);let Y=(0,i.useMemo)(()=>({style:{position:"absolute",right:"0px",bottom:"0px"},current:F,pageSize:P,total:L.length,onChange:(e,t)=>{C(e),T(t)},showSizeChanger:!0,showTotal:e=>t("Total {{count}} items",{count:e})}),[F,P,L.length,t]),N=()=>{if(!1===h)return;let e={__is_new__:!0};n.forEach(t=>{e[t.dataIndex]=void 0});let t=[...E(),e];C(Math.ceil(t.length/P)),D(t)},O=e=>{let t=[...E()];t.splice(e,1);let l=Math.ceil(t.length/P);C(F>l?l:F),D(t)},B=(e,t,l)=>{D(E().map((o,n)=>n===e?{...o,[t]:l}:o))},V=n.map(e=>({...e,render:(t,o,n)=>{let i=(F-1)*P+n,r=R(o)??`row:${i}`,a=`${r}:${i}`,s=e.dataIndex??e.key??"cell";return"_empty"===e.key?(0,m.jsx)("div",{style:{minHeight:l.controlHeight}}):e.render?e.render({record:o,rowIdx:i,id:`field-${String(s)}-${a}`,value:t,parentFieldIndex:g,parentItem:y,onChange:t=>{var l;B(i,e.dataIndex,(null==t||null==(l=t.target)?void 0:l.value)??t)},"aria-describedby":`field-${String(s)}-${a}`}):void 0}})).concat([!r&&{title:"",key:"delete",width:50,align:"center",fixed:"right",render:(e,t,l)=>{let o=(F-1)*P+l;if(c||t.__is_new__||t.__is_stored__)return(0,m.jsx)("div",{onMouseDown:e=>{var t;let l=document.activeElement;!l||e.currentTarget.contains(l)||null==(t=l.blur)||t.call(l)},onClick:()=>{setTimeout(()=>{O(o)})},children:(0,m.jsx)(to.CloseOutlined,{style:{cursor:"pointer",color:"gray"}})})}}]).filter(Boolean),H=(0,i.useMemo)(()=>{if(!L.length)return[];let e=(F-1)*P;return L.slice(e,e+P)},[L,F,P]);return(0,m.jsx)(b.Form.Item,{children:(0,m.jsx)(b.Table,{dataSource:H,columns:V,rowKey:e=>R(e)??"",tableLayout:"fixed",scroll:{x:"max-content"},pagination:Y,locale:{emptyText:(0,m.jsx)("span",{children:r?t("No data"):a&&d?t("Please add or select record"):a?t("Please add record"):d?t("Please select record"):t("No data")})},components:s??{},className:(0,A.css)`
1105
1105
  .ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content {
1106
1106
  display: inline;
1107
1107
  }
@@ -1112,7 +1112,7 @@ ctx.render(\`
1112
1112
  margin-bottom: 4px;
1113
1113
  }
1114
1114
  }
1115
- `,footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:"36px"},children:(0,m.jsxs)(b.Space,{children:[r&&(p||h)&&(p?(0,m.jsxs)(b.Button,{type:"link",onClick:Y,disabled:n,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]}):(0,m.jsx)(aQ._T,{message:t("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(b.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]})})),s&&(0,m.jsxs)(b.Button,{type:"link",onClick:()=>d(F,C),disabled:n,children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",t("Select record")]})]})})})})}fb.renderMode=f.ModelRenderMode.RenderFunction,fb.fieldComponentContext=fe,fb.define({label:(0,f.tExpr)("Table column"),icon:"TableColumn",createModelOptions:{use:"SubTableColumnModel"},sort:0}),fb.registerFlow({key:"subTableColumnSettings",sort:500,title:(0,f.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l;let o=e.model.context.collectionField;if(!o)return;e.model.setProps(o.getComponentProps()),e.model.setProps("title",o.title),e.model.setProps("dataIndex",o.name),await e.model.applySubModelsBeforeRenderFlows("field");let n=e.model.context.blockModel;null==n||null==(l=n.addAppends)||l.call(n,e.model.fieldPath)}},title:{title:(0,f.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,f.tExpr)("Column title")},"x-reactions":t=>{var l;let{model:o}=e,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+n}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath.split(".").pop()})}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,f.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,m.jsxs)(m.Fragment,{children:[l,(0,m.jsx)(b.Divider,{style:{margin:"4px 0"}}),(0,m.jsx)(mZ,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:200},handler(e,t){e.model.setProps("width",mQ(t.width))}},aclCheck:{use:"aclCheck",async handler(e,t){var l,o,n,i,r,a;if(!e.collectionField)return;let s=e.blockModel.context.actionName,d=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,fields:[e.collectionField.name],actionName:"update"}),u=await e.aclCheck({dataSourceKey:null==(n=e.dataSource)?void 0:n.key,resourceName:null==(i=e.collectionField)?void 0:i.collectionName,fields:[e.collectionField.name],actionName:"create"});"update"===s&&(await e.aclCheck({dataSourceKey:null==(r=e.dataSource)?void 0:r.key,resourceName:null==(a=e.collectionField)?void 0:a.collectionName,fields:[e.collectionField.name],actionName:"view"})||e.model.setProps({aclViewDisabled:!0})),d||e.model.setProps({aclDisabled:!0}),u||e.model.setProps({aclCreateDisabled:!0})}},subModel:{title:(0,f.tExpr)("Preview field component"),uiSchema:e=>{if(!e.model.subModels.field.constructor.isLargeField)return null;let t=f.DisplayItemModel.getBindingsByField(e,e.model.collectionField);return 1===t.length?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:t.map(t=>{var l;return{label:(null==(l=e.engine.getModelClass(t.modelName).meta)?void 0:l.label)||t.modelName,value:t.modelName,defaultProps:t.defaultProps}})}}},defaultParams:e=>{let t=f.DisplayItemModel.getDefaultBindingByField(e,e.model.collectionField);return{use:null==t?void 0:t.modelName}},async handler(e,t){if(!e.model.subModels.field.constructor.isLargeField)return null;let l=e.model.collectionField,o=t.use,n=e.model.subModels.field.setSubModel("readPrettyField",{use:o,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:l.collection.name,fieldPath:e.model.fieldPath}}}});await n.dispatchEvent("beforeRender")}},initialValue:{title:(0,f.tExpr)("Default value"),uiSchema:{},defaultParams:()=>({}),handler(){}},required:{title:(0,f.tExpr)("Required"),use:"required"},validation:{title:(0,f.tExpr)("Validation"),use:"validation"},model:{use:"fieldComponent",title:(0,f.tExpr)("Field component")},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),hideInSettings(e){var t;return!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||(null==(t=e.model.subModels.field)?void 0:t.disableTitleField)},defaultParams:e=>({label:fg(e.model)}),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||!t.label||t.label===l.label)return null;let n=e.collectionField.targetCollection,i=null==n?void 0:n.getField(t.label);if(!i)return null;let r=d6.getDefaultBindingByField(e,i),a=e.model.subModels.field,s=d1(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:n.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,i):null==r?void 0:r.defaultProps;e.model.setProps({titleField:t.label,...null==(o=i.getComponentProps)?void 0:o.call(i)}),d&&d!==s?await d2({parentModel:e.model,targetUse:d,defaultProps:{...c||{},titleField:t.label},fieldSettingsInit:u}):a&&(a.setProps({...c||{},titleField:t.label}),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}))},handler(e,t){var l,o,n;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model))return null;e.model.setProps({titleField:t.label,...null==(n=e.collectionField.targetCollection)||null==(o=n.getField(t.label))||null==(l=o.getComponentProps)?void 0:l.call(o)})}},pattern:{use:"pattern"},fixed:{title:(0,f.tExpr)("Fixed"),use:"fixed"}}}),fb.define({hide:!0,label:(0,f.tExpr)("Table column"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search fields")});let fF=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:["SubTableColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},fC=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})})});class fA extends uC{getCurrentValue(){var e,t,l,o,n,i;let r=Array.isArray(this.props.value)?this.props.value:[],a=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray);if(!Array.isArray(a)||!a.length)return r;let s=null==(i=this.context.blockModel)||null==(n=i.context)||null==(o=n.form)||null==(l=o.getFieldValue)?void 0:l.call(o,a);return Array.isArray(s)?s:r}get collection(){return this.context.collection}getColumns(){let{enableIndexColumn:e}=this.props;return mj([e&&{key:"__index__",width:48,align:"center",fixed:"left",render:e=>e.rowIdx+1},...this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"_empty"}),this.context.flowSettingsEnabled&&{key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(fF,{model:this})}].filter(Boolean))}render(){var e,t,l;let o=this.getColumns(),n={header:{wrapper:fC}},i=!!this.context.flowSettingsEnabled,r=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),a=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,r,l)};return(0,m.jsx)(fk,{...this.props,columns:o,components:n,isConfigMode:i,parentFieldIndex:this.context.fieldIndex,parentItem:this.context.item,filterTargetKey:this.collection.filterTargetKey,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,fieldPathArray:r,getCurrentValue:()=>this.getCurrentValue(),onResetFieldValue:a})}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openView",{setCurrentPage:e,currentPageSize:t})}}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.updateAssociation=!0}}function fP(e,t){var l;return(null==(l=e())?void 0:l.item)??hE(t())}fA.registerFlow({key:"subTableColumnSettings",title:(0,f.tExpr)("Sub-table settings"),sort:300,steps:{init:{async handler(e,t){await e.model.applySubModelsBeforeRenderFlows("columns")}},enableIndexColumn:{title:(0,f.tExpr)("Show row numbers"),uiMode:{type:"switch",key:"enableIndexColumn"},defaultParams:{enableIndexColumn:!0},handler(e,t){e.model.setProps({enableIndexColumn:t.enableIndexColumn})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),fA.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"subTableColumnSettings","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},n=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",i=e.inputArgs.size||t.size||"medium",r=e.model.getCurrentValue();e.model.selectedRows.value=r;let a=e.inputArgs.currentItemValue??r;e.viewer.open({type:n,width:o[n][i],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:a}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.getCurrentValue(),renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=[...e.model.getCurrentValue(),...l.map(e=>({...e,__is_stored__:!0}))].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));e.model.selectedRows.value=o}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===n?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),fA.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,io.uid)()})}}}}),fA.define({label:(0,f.tExpr)("Subtable (Inline editing)")}),un.bindModelToInterface("SubTableFieldModel",["m2m","o2m","mbm"],{order:200,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class fT extends uC{onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.parent.fieldPath}),"update"===this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}}let fj=e=>{let t=(0,f.useFlowModel)(),l=t.subModels.grid,o=t.context.fieldIndex,n=t.context.record,r=i.default.useMemo(()=>{if(null==o)return l;let e=l.createFork({},`${o}`);return e.context.defineProperty("fieldIndex",{get:()=>o}),e.context.defineProperty("record",{get:()=>n,cache:!1}),e.context.defineProperty("fieldKey",{get:()=>o}),e},[l,o,n]);return(0,i.useEffect)(()=>{e.disabled!==r.context.parentDisabled&&(r.mapSubModels("items",t=>{t.setProps({disabled:e.disabled})}),r.context.defineProperty("parentDisabled",{get:()=>e.disabled,cache:!1}))},[e.disabled,r]),(0,i.useEffect)(()=>{var e,l;let{value:o,...n}=(null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"item"))||{};r.context.defineProperty("item",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.item},...n,cache:!1})},[r,t]),(0,i.useEffect)(()=>{var e,l;let o=null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"currentObject");o&&r.context.defineProperty("currentObject",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.currentObject},cache:!1,resolveOnServer:null==o?void 0:o.resolveOnServer,serverOnlyWhenContextParams:null==o?void 0:o.serverOnlyWhenContextParams})},[r,t]),(0,m.jsx)(b.Card,{children:(0,m.jsx)(f.FlowModelRenderer,{model:r,showFlowSettings:!1})})};class fI extends fT{onInit(e){var t,l;super.onInit(e),this.context.blockModel.emitter.on("formValuesChange",e=>{this.dispatchEvent("formValuesChange",e,{debounce:!0})});let o=hO({parentContextAccessor:()=>{var e;return null==(e=this.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>this.context.formValues}),n=hD({valueAccessor:()=>this.context.form.getFieldValue(this.props.name),parentItemAccessor:()=>fP(()=>{var e;return null==(e=this.parent)?void 0:e.context},()=>this.context.formValues)});this.context.defineProperty("item",{get:n,...hU({t:this.context.t,title:hN(this.context.t,this.context.collectionField,this.props.name),showIndex:(0,d5.E4)(this.context.collectionField),showParentIndex:Array.isArray(this.context.fieldIndex)&&this.context.fieldIndex.length>0,collectionAccessor:()=>this.context.collection,propertiesAccessor:e=>{var t;return null==e||null==(t=e.item)?void 0:t.value},resolverPropertiesAccessor:()=>this.context.form.getFieldValue(this.props.name),parentCollectionAccessor:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.collection},parentAccessors:o})});let i=null==(t=(l=this.context).getPropertyOptions)?void 0:t.call(l,"currentObject");this.context.defineProperty("currentObject",{get:()=>this.context.form.getFieldValue(this.props.name),cache:!1,resolveOnServer:null==i?void 0:i.resolveOnServer,serverOnlyWhenContextParams:null==i?void 0:i.serverOnlyWhenContextParams})}onMount(){super.onMount(),setTimeout(()=>{this.applyFlow("eventSettings")},100)}render(){return(0,m.jsx)(fj,{...this.props})}constructor(...e){super(...e),this.updateAssociation=!0}}fI.define({label:(0,f.tExpr)("Subform"),createModelOptions:{use:"SubFormFieldModel",subModels:{grid:{use:"FormGridModel"}}}}),fI.registerFlow({key:"eventSettings",title:(0,f.tExpr)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"subFormFieldLinkageRules",afterParamsSave(e){e.model.applyFlow("eventSettings")}}}});let fL=e=>{var t,l;let{name:o,value:n,disabled:r,allowAddNew:a,allowSelectExistingRecord:s,onSelectExitRecordClick:d,allowDisassociation:u,allowCreate:c}=e,p=(0,f.useFlowModel)(),h=p.subModels.grid,g=!!p.context.flowSettingsEnabled,{t:y}=(0,v.useTranslation)(),_=p.context.fieldIndex||[],x=(null==p||null==(l=p.parent)||null==(t=l.context)?void 0:t.fieldPathArray)||[],M=(0,i.useRef)({}),w=p.context.collectionField.name,S=()=>fP(()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}),k=hO({parentContextAccessor:()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}});return(0,i.useEffect)(()=>{h.context.defineProperty("parentDisabled",{get:()=>r,cache:!1})},[r,h.context]),(0,m.jsx)(b.Card,{bordered:!0,style:{position:"relative"},className:(0,A.css)`
1115
+ `,footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:"36px"},children:(0,m.jsxs)(b.Space,{children:[a&&(h||f)&&(h?(0,m.jsxs)(b.Button,{type:"link",onClick:N,disabled:r,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]}):(0,m.jsx)(aQ._T,{message:t("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(b.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]})})),d&&(0,m.jsxs)(b.Button,{type:"link",onClick:()=>u(C,P),disabled:r,children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",t("Select record")]})]})})})})}fb.renderMode=f.ModelRenderMode.RenderFunction,fb.fieldComponentContext=fe,fb.define({label:(0,f.tExpr)("Table column"),icon:"TableColumn",createModelOptions:{use:"SubTableColumnModel"},sort:0}),fb.registerFlow({key:"subTableColumnSettings",sort:500,title:(0,f.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l;let o=e.model.context.collectionField;if(!o)return;e.model.setProps(o.getComponentProps()),e.model.setProps("title",o.title),e.model.setProps("dataIndex",o.name),await e.model.applySubModelsBeforeRenderFlows("field");let n=e.model.context.blockModel;null==n||null==(l=n.addAppends)||l.call(n,e.model.fieldPath)}},title:{title:(0,f.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,f.tExpr)("Column title")},"x-reactions":t=>{var l;let{model:o}=e,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+n}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath.split(".").pop()})}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,f.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,m.jsxs)(m.Fragment,{children:[l,(0,m.jsx)(b.Divider,{style:{margin:"4px 0"}}),(0,m.jsx)(mZ,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:200},handler(e,t){e.model.setProps("width",mQ(t.width))}},aclCheck:{use:"aclCheck",async handler(e,t){var l,o,n,i,r,a;if(!e.collectionField)return;let s=e.blockModel.context.actionName,d=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,fields:[e.collectionField.name],actionName:"update"}),u=await e.aclCheck({dataSourceKey:null==(n=e.dataSource)?void 0:n.key,resourceName:null==(i=e.collectionField)?void 0:i.collectionName,fields:[e.collectionField.name],actionName:"create"});"update"===s&&(await e.aclCheck({dataSourceKey:null==(r=e.dataSource)?void 0:r.key,resourceName:null==(a=e.collectionField)?void 0:a.collectionName,fields:[e.collectionField.name],actionName:"view"})||e.model.setProps({aclViewDisabled:!0})),d||e.model.setProps({aclDisabled:!0}),u||e.model.setProps({aclCreateDisabled:!0})}},subModel:{title:(0,f.tExpr)("Preview field component"),uiSchema:e=>{if(!e.model.subModels.field.constructor.isLargeField)return null;let t=f.DisplayItemModel.getBindingsByField(e,e.model.collectionField);return 1===t.length?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:t.map(t=>{var l;return{label:(null==(l=e.engine.getModelClass(t.modelName).meta)?void 0:l.label)||t.modelName,value:t.modelName,defaultProps:t.defaultProps}})}}},defaultParams:e=>{let t=f.DisplayItemModel.getDefaultBindingByField(e,e.model.collectionField);return{use:null==t?void 0:t.modelName}},async handler(e,t){if(!e.model.subModels.field.constructor.isLargeField)return null;let l=e.model.collectionField,o=t.use,n=e.model.subModels.field.setSubModel("readPrettyField",{use:o,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:l.collection.name,fieldPath:e.model.fieldPath}}}});await n.dispatchEvent("beforeRender")}},initialValue:{title:(0,f.tExpr)("Default value"),uiSchema:{},defaultParams:()=>({}),handler(){}},required:{title:(0,f.tExpr)("Required"),use:"required"},validation:{title:(0,f.tExpr)("Validation"),use:"validation"},model:{use:"fieldComponent",title:(0,f.tExpr)("Field component")},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),hideInSettings(e){var t;return!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||(null==(t=e.model.subModels.field)?void 0:t.disableTitleField)},defaultParams:e=>({label:fg(e.model)}),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||!t.label||t.label===l.label)return null;let n=e.collectionField.targetCollection,i=null==n?void 0:n.getField(t.label);if(!i)return null;let r=d6.getDefaultBindingByField(e,i),a=e.model.subModels.field,s=d1(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:n.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,i):null==r?void 0:r.defaultProps;e.model.setProps({titleField:t.label,...null==(o=i.getComponentProps)?void 0:o.call(i)}),d&&d!==s?await d2({parentModel:e.model,targetUse:d,defaultProps:{...c||{},titleField:t.label},fieldSettingsInit:u}):a&&(a.setProps({...c||{},titleField:t.label}),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}))},handler(e,t){var l,o,n;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model))return null;e.model.setProps({titleField:t.label,...null==(n=e.collectionField.targetCollection)||null==(o=n.getField(t.label))||null==(l=o.getComponentProps)?void 0:l.call(o)})}},pattern:{use:"pattern"},fixed:{title:(0,f.tExpr)("Fixed"),use:"fixed"}}}),fb.define({hide:!0,label:(0,f.tExpr)("Table column"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search fields")});let fF=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:["SubTableColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},fC=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})})});class fA extends uC{getCurrentValue(){var e,t,l,o,n,i;let r=Array.isArray(this.props.value)?this.props.value:[],a=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray);if(!Array.isArray(a)||!a.length)return r;let s=null==(i=this.context.blockModel)||null==(n=i.context)||null==(o=n.form)||null==(l=o.getFieldValue)?void 0:l.call(o,a);return Array.isArray(s)?s:r}get collection(){return this.context.collection}getColumns(){let{enableIndexColumn:e}=this.props;return mj([e&&{key:"__index__",width:48,align:"center",fixed:"left",render:e=>e.rowIdx+1},...this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"_empty"}),this.context.flowSettingsEnabled&&{key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(fF,{model:this})}].filter(Boolean))}render(){var e,t,l;let o=this.getColumns(),n={header:{wrapper:fC}},i=!!this.context.flowSettingsEnabled,r=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),a=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,r,l)};return(0,m.jsx)(fk,{...this.props,columns:o,components:n,isConfigMode:i,parentFieldIndex:this.context.fieldIndex,parentItem:this.context.item,filterTargetKey:this.collection.filterTargetKey,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,fieldPathArray:r,getCurrentValue:()=>this.getCurrentValue(),onResetFieldValue:a})}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openView",{setCurrentPage:e,currentPageSize:t})}}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.updateAssociation=!0}}function fP(e,t){var l;return(null==(l=e())?void 0:l.item)??hE(t())}fA.registerFlow({key:"subTableColumnSettings",title:(0,f.tExpr)("Sub-table settings"),sort:300,steps:{init:{async handler(e,t){await e.model.applySubModelsBeforeRenderFlows("columns")}},enableIndexColumn:{title:(0,f.tExpr)("Show row numbers"),uiMode:{type:"switch",key:"enableIndexColumn"},defaultParams:{enableIndexColumn:!0},handler(e,t){e.model.setProps({enableIndexColumn:t.enableIndexColumn})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),fA.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"subTableColumnSettings","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},n=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",i=e.inputArgs.size||t.size||"medium",r=e.model.getCurrentValue();e.model.selectedRows.value=r;let a=e.inputArgs.currentItemValue??r;e.viewer.open({type:n,width:o[n][i],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:a}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.getCurrentValue(),renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=[...e.model.getCurrentValue(),...l.map(e=>({...e,__is_stored__:!0}))].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));e.model.selectedRows.value=o}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===n?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),fA.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,io.uid)()})}}}}),fA.define({label:(0,f.tExpr)("Subtable (Inline editing)")}),un.bindModelToInterface("SubTableFieldModel",["m2m","o2m","mbm"],{order:200,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class fT extends uC{onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.parent.fieldPath}),"update"===this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}}let fj=e=>{let t=(0,f.useFlowModel)(),l=t.subModels.grid,o=t.context.fieldIndex,n=t.context.record,r=i.default.useMemo(()=>{if(null==o)return l;let e=l.createFork({},`${o}`);return e.context.defineProperty("fieldIndex",{get:()=>o}),e.context.defineProperty("record",{get:()=>n,cache:!1}),e.context.defineProperty("fieldKey",{get:()=>o}),e},[l,o,n]);return(0,i.useEffect)(()=>{e.disabled!==r.context.parentDisabled&&(r.mapSubModels("items",t=>{t.setProps({disabled:e.disabled})}),r.context.defineProperty("parentDisabled",{get:()=>e.disabled,cache:!1}))},[e.disabled,r]),(0,i.useEffect)(()=>{var e,l;let{value:o,...n}=(null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"item"))||{};r.context.defineProperty("item",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.item},...n,cache:!1})},[r,t]),(0,i.useEffect)(()=>{var e,l;let o=null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"currentObject");o&&r.context.defineProperty("currentObject",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.currentObject},cache:!1,resolveOnServer:null==o?void 0:o.resolveOnServer,serverOnlyWhenContextParams:null==o?void 0:o.serverOnlyWhenContextParams})},[r,t]),(0,m.jsx)(b.Card,{children:(0,m.jsx)(f.FlowModelRenderer,{model:r,showFlowSettings:!1})})};class fI extends fT{onInit(e){var t,l;super.onInit(e),this.context.blockModel.emitter.on("formValuesChange",e=>{this.dispatchEvent("formValuesChange",e,{debounce:!0})});let o=hO({parentContextAccessor:()=>{var e;return null==(e=this.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>this.context.formValues}),n=hD({valueAccessor:()=>this.context.form.getFieldValue(this.props.name),parentItemAccessor:()=>fP(()=>{var e;return null==(e=this.parent)?void 0:e.context},()=>this.context.formValues)});this.context.defineProperty("item",{get:n,...hU({t:this.context.t,title:hN(this.context.t,this.context.collectionField,this.props.name),showIndex:(0,d5.E4)(this.context.collectionField),showParentIndex:Array.isArray(this.context.fieldIndex)&&this.context.fieldIndex.length>0,collectionAccessor:()=>this.context.collection,propertiesAccessor:e=>{var t;return null==e||null==(t=e.item)?void 0:t.value},resolverPropertiesAccessor:()=>this.context.form.getFieldValue(this.props.name),parentCollectionAccessor:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.collection},parentAccessors:o})});let i=null==(t=(l=this.context).getPropertyOptions)?void 0:t.call(l,"currentObject");this.context.defineProperty("currentObject",{get:()=>this.context.form.getFieldValue(this.props.name),cache:!1,resolveOnServer:null==i?void 0:i.resolveOnServer,serverOnlyWhenContextParams:null==i?void 0:i.serverOnlyWhenContextParams})}onMount(){super.onMount(),setTimeout(()=>{this.applyFlow("eventSettings")},100)}render(){return(0,m.jsx)(fj,{...this.props})}constructor(...e){super(...e),this.updateAssociation=!0}}fI.define({label:(0,f.tExpr)("Subform"),createModelOptions:{use:"SubFormFieldModel",subModels:{grid:{use:"FormGridModel"}}}}),fI.registerFlow({key:"eventSettings",title:(0,f.tExpr)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"subFormFieldLinkageRules",afterParamsSave(e){e.model.applyFlow("eventSettings")}}}});let fL=e=>{var t,l;let{name:o,value:n,disabled:r,allowAddNew:a,allowSelectExistingRecord:s,onSelectExitRecordClick:d,allowDisassociation:u,allowCreate:c}=e,p=(0,f.useFlowModel)(),h=p.subModels.grid,g=!!p.context.flowSettingsEnabled,{t:y}=(0,v.useTranslation)(),_=p.context.fieldIndex||[],x=(null==p||null==(l=p.parent)||null==(t=l.context)?void 0:t.fieldPathArray)||[],M=(0,i.useRef)({}),w=p.context.collectionField.name,S=()=>fP(()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}),k=hO({parentContextAccessor:()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}});return(0,i.useEffect)(()=>{h.context.defineProperty("parentDisabled",{get:()=>r,cache:!1})},[r,h.context]),(0,m.jsx)(b.Card,{bordered:!0,style:{position:"relative"},className:(0,A.css)`
1116
1116
  > .ant-card-body > .ant-divider:last-child {
1117
1117
  display: none;
1118
1118
  }
@@ -1178,7 +1178,7 @@ ctx.render(\`
1178
1178
  text-overflow: ellipsis;
1179
1179
  white-space: nowrap;
1180
1180
  width: calc(${n}px - 16px);
1181
- `,children:d})]}):(0,m.jsx)("td",{className:(0,mP.default)(t),...c,children:(0,m.jsxs)("div",{style:{width:n},children:[" ",d]})})}),gy=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"subTableColumns",subModelBaseClasses:["TableColumnModel","TableAssociationFieldGroupModel","TableCustomColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},g_=e=>{var t,l;let{pageSize:o,value:n,size:r,collection:a,baseColumns:s,enableIndexColumn:d=!0,model:u,allowAddNew:c,allowSelectExistingRecord:p,disabled:h,onAddRecordClick:f,onSelectExitRecordClick:g,resetPage:y,allowCreate:_,formValuesChangeEmitter:x,onResetFieldValue:M}=e,[w,S]=(0,i.useState)(1),[k,F]=(0,i.useState)(o),{t:C}=(0,v.useTranslation)(),P=!!(null==(l=u.flowEngine)||null==(t=l.flowSettings)?void 0:t.enabled),[T,j]=(0,i.useState)(n);(0,i.useEffect)(()=>{j(n)},[n]),(0,i.useEffect)(()=>{F(o)},[o]),(0,i.useEffect)(()=>{y&&S(1)},[y]),(0,i.useEffect)(()=>{if(!(null==x?void 0:x.on)||!(null==x?void 0:x.off)||!M)return;let e=()=>{M(),j([])};return x.on("onFieldReset",e),()=>{x.off("onFieldReset",e)}},[x,M]);let I=(0,i.useMemo)(()=>({current:w,pageSize:k,total:null==T?void 0:T.length,onChange:(e,t)=>{S(e),F(t)},showSizeChanger:!0,showTotal:e=>C("Total {{count}} items",{count:e})}),[w,k,T,C]),L=(0,i.useMemo)(()=>{let e=mj([d&&{key:"__index__",width:48,align:"center",fixed:"left",render:(e,t,l)=>(w-1)*k+l+1},...s,{key:"empty"}].filter(Boolean));return P&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(gy,{model:u})}),e},[s,d,w,k,P,u]);return(0,m.jsx)(b.Table,{tableLayout:"fixed",size:r,rowKey:a.filterTargetKey,scroll:{x:"max-content"},dataSource:T,columns:L,pagination:I,locale:{emptyText:(0,m.jsx)("span",{children:h?C("No data"):c&&p?C("Please add or select record"):c?C("Please add record"):p?C("Please select record"):C("No data")})},className:(0,A.css)`
1181
+ `,children:d})]}):(0,m.jsx)("td",{className:(0,mP.default)(t),...c,children:(0,m.jsxs)("div",{style:{width:n},children:[" ",d]})})}),gy=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"subTableColumns",subModelBaseClasses:["TableColumnModel","TableAssociationFieldGroupModel","TableCustomColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},g_=e=>{var t,l;let{token:o}=b.theme.useToken(),{pageSize:n,value:r,size:a,collection:s,baseColumns:d,enableIndexColumn:u=!0,model:c,allowAddNew:p,allowSelectExistingRecord:h,disabled:f,onAddRecordClick:g,onSelectExitRecordClick:y,resetPage:_,allowCreate:x,formValuesChangeEmitter:M,onResetFieldValue:w}=e,[S,k]=(0,i.useState)(1),[F,C]=(0,i.useState)(n),{t:P}=(0,v.useTranslation)(),T=!!(null==(l=c.flowEngine)||null==(t=l.flowSettings)?void 0:t.enabled),[j,I]=(0,i.useState)(r);(0,i.useEffect)(()=>{I(r)},[r]),(0,i.useEffect)(()=>{C(n)},[n]),(0,i.useEffect)(()=>{_&&k(1)},[_]),(0,i.useEffect)(()=>{if(!(null==M?void 0:M.on)||!(null==M?void 0:M.off)||!w)return;let e=()=>{w(),I([])};return M.on("onFieldReset",e),()=>{M.off("onFieldReset",e)}},[M,w]);let L=(0,i.useMemo)(()=>({current:S,pageSize:F,total:null==j?void 0:j.length,onChange:(e,t)=>{k(e),C(t)},showSizeChanger:!0,showTotal:e=>P("Total {{count}} items",{count:e})}),[S,F,j,P]),R=(0,i.useMemo)(()=>{let e=mj([u&&{key:"__index__",width:48,align:"center",fixed:"left",render:(e,t,l)=>(S-1)*F+l+1},...d,{key:"empty",render:()=>(0,m.jsx)("div",{style:{minHeight:o.controlHeight}})}].filter(Boolean));return T&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(gy,{model:c})}),e},[d,u,S,F,T,c,o.controlHeight]);return(0,m.jsx)(b.Table,{tableLayout:"fixed",size:a,rowKey:s.filterTargetKey,scroll:{x:"max-content"},dataSource:j,columns:R,pagination:L,locale:{emptyText:(0,m.jsx)("span",{children:f?P("No data"):p&&h?P("Please add or select record"):p?P("Please add record"):h?P("Please select record"):P("No data")})},className:(0,A.css)`
1182
1182
  .ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content {
1183
1183
  display: inline;
1184
1184
  }
@@ -1195,7 +1195,7 @@ ctx.render(\`
1195
1195
  margin-bottom: 4px;
1196
1196
  }
1197
1197
  }
1198
- `,components:{header:{wrapper:gg},body:{cell:gv}},footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,m.jsxs)(b.Space,{size:"middle",children:[c&&(_||P)&&(_?(0,m.jsxs)(b.Button,{type:"link",onClick:()=>f(S,k),disabled:h,children:[(0,m.jsx)(to.PlusOutlined,{}),C("Add new")]}):(0,m.jsx)(aQ._T,{message:C("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(b.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),C("Add new")]})})),p&&(0,m.jsxs)(b.Button,{type:"link",disabled:h,onClick:()=>g(S,k),children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",C("Select record")]})]})})})};class gb extends uC{get collection(){return this.context.collection}get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.context.fieldPath}),this.context.defineProperty("disableFieldClickToOpen",{value:!0}),this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}async onDispatchEventStart(e){"beforeRender"===e&&(this.context.defineProperty("associationModel",{value:this}),this.onAddRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openAddRecordView",{setCurrentPage:e,currentPageSize:t})},this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openSelectRecordView",{setCurrentPage:e,currentPageSize:t})})}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}set onAddRecordClick(e){this.setProps({onAddRecordClick:e})}async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}getBaseColumns(e){return e.mapSubModels("subTableColumns",t=>t.getColumnProps(e)).filter(e=>!(null==e?void 0:e.hidden))}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}render(){var e,t,l;let o=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),n=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,o,l)};return(0,m.jsx)(g_,{...this.props,collection:this.collection,baseColumns:this.getBaseColumns(this),model:this,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,onResetFieldValue:n})}constructor(...e){super(...e),this.disableTitleField=!0,this.defaultOverflowMode="ellipsis",this.updateAssociation=!0,this.selectedRows=f.observable.ref([])}}gb.registerFlow({key:"advanceSubTableAssociation",title:(0,f.tExpr)("Association table settings"),steps:{init:{async handler(e){await e.model.applySubModelsBeforeRenderFlows("subTableColumns")}},quickEdit:{title:(0,f.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},defaultParams:{editable:!1},handler(e,t){e.model.setProps("editable",t.editable)},async afterParamsSave(e,t,l){(null==t?void 0:t.editable)===(null==l?void 0:l.editable)||e.model.mapSubModels("subTableColumns",e=>{var l,o,n,i;let r=null==e||null==(l=e.getFlow)?void 0:l.call(e,"tableColumnSettings");if(!(null==r||null==(o=r.getStep)?void 0:o.call(r,"quickEdit")))return;let a=null==(n=e.getStepParams)?void 0:n.call(e,"tableColumnSettings","quickEdit");if(a&&Object.prototype.hasOwnProperty.call(a,"editable"))return;let s=!!(null==e||null==(i=e.collectionField)?void 0:i.readonly),d=!!(null==e?void 0:e.associationPathName);e.setProps("editable",!s&&!d&&!!t.editable)})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),gb.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openAddRecordView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup (Add new)"),hideInSettings(e){var t,l,o;return!1===(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowAddNew"))?void 0:t.allowAddNew)},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;let u={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},c=e.inputArgs.mode||t.mode||"drawer",p=e.inputArgs.size||t.size||"medium",h=(null==e?void 0:e.item)??{value:("function"==typeof(null==e?void 0:e.getFormValues)?e.getFormValues():e.formValues)??e.record},f=null==e||null==(l=e.getPropertyOptions)?void 0:l.call(e,"item"),g=Array.isArray(null==(n=e.model)||null==(o=n.props)?void 0:o.value)?e.model.props.value.length:0,v=g+1,y=null==(i=e.collectionField)?void 0:i.resourceName,_=(null==h?void 0:h.value)?null==(s=e.collectionField)||null==(a=s.collection)||null==(r=a.getFilterByTK)?void 0:r.call(a,h.value):void 0,b=uI(e,e.inputArgs);e.viewer.open({type:c,width:u[c][p],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(d=e.collectionField)?void 0:d.target,...y&&null!=_?{associationName:y,sourceId:_}:{},collectionField:e.collectionField,parentItem:h,parentItemMeta:null==f?void 0:f.meta,parentItemResolver:null==f?void 0:f.resolveOnServer,itemIndex:g,itemLength:v,openerUids:b},content:()=>(0,m.jsx)(gp,{model:e.model,scene:"create"}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===c?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gb.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openSelectRecordView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},n=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",i=e.inputArgs.size||t.size||"medium";e.model.selectedRows.value=e.model.props.value||[];let r=e.inputArgs.currentItemValue??e.model.props.value??[];e.viewer.open({type:n,width:o[n][i],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:r}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.props.value,renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=e.model.props.value||[],n=e.collection.filterTargetKey,i=[...o,...l.map(e=>({...e,__is_stored__:!0}))],r=new Map,a=[];for(let e of i){let t=gf(e,n);if(null==t){a.push(e);continue}r.has(t)||(r.set(t,e),a.push(e))}e.model.selectedRows.value=a}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===n?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gb.registerFlow({key:"AdvancedSubTableUpdateRowSettings",on:"updateRow",steps:{updateRow:{async handler(e,t){var l;let o,n=e.inputArgs.updatedRecord,i=(null==(l=e.model.props)?void 0:l.value)||[],r=e.collection.filterTargetKey,a=n[r],s=-1;n.__is_new__?s=i.findIndex(e=>e.__index__===n.__index__):a&&(s=i.findIndex(e=>e[r]===a)),-1===s?o=[...i,{...n,__is_new__:!0,__index__:(0,io.uid)()}]:(o=[...i])[s]={...i[s],...n},e.model.props.onChange(o);let d=Math.ceil(o.length/e.model.currentPageSize);e.model.setCurrentPage(d)}}}}),gb.registerFlow({key:"AdvancedSubTableRemoveRowSettings",on:"removeRow",steps:{removeRow:{async handler(e,t){var l;let o=e.inputArgs.removeRecord,n=e.collection.filterTargetKey,i=(null==(l=e.model.props)?void 0:l.value)||[],r="object"==typeof o?o[n]:o,a=-1;if(-1===(a=o.__is_new__?i.findIndex(e=>e.__index__===o.__index__):i.findIndex(e=>e[n]===r)))return i;let s=i.slice();s.splice(a,1),e.model.props.onChange(s)}}}}),gb.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,io.uid)()})}}}}),gb.define({label:(0,f.tExpr)("Subtable (Popup editing)"),createModelOptions:{use:"PopupSubTableFieldModel",subModels:{subTableColumns:[{use:"PopupSubTableActionsColumnModel",subModels:{actions:[{use:"PopupSubTableEditActionModel"},{use:"PopupSubTableRemoveActionModel"}]}}]}}}),f.EditableItemModel.bindModelToInterface("PopupSubTableFieldModel",["m2m","o2m","mbm"],{order:300,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class gx extends gm{async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("click",{event:e,...this.getInputArgs()},{debounce:!0})})}constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("Remove")}}}gx.define({label:(0,f.tExpr)("Remove")}),gx.registerFlow({key:"subTableRemoveActionSettings",steps:{disableProps:{async handler(e,t){var l,o,n;if(!e.model.context.associationModel)return;let i=null==(o=(n=e.model.context.associationModel).getStepParams)||null==(l=o.call(n,"advanceSubTableAssociation","allowDisassociation"))?void 0:l.allowDisassociation,r=e.record;!1!==i||r.__is_new__||r.__is_stored__?e.model.setProps({disabled:!1}):e.model.setProps({disabled:!0})}}}}),gx.registerFlow({key:"deleteSettings",title:(0,f.tExpr)("Delete settings"),on:"click",steps:{confirm:{use:"confirm",defaultParams:{enable:!0,title:(0,f.tExpr)("Remove record"),content:(0,f.tExpr)("Are you sure you want to remove it?")}},delete:{async handler(e,t){e.model.context.associationModel.dispatchEvent("removeRow",{removeRecord:e.record})}}}}),gx.registerFlow({key:"enableRemoveChange",on:"enableRemoveChange",steps:{pageRefresh:{handler(e,t){console.log(e,999999)}}}});class gM extends aW{}gM.registerActionModels({PopupSubTableEditActionModel:gh,PopupSubTableRemoveActionModel:gx});let gw=(0,__rspack_external__formily_reactive_react_41406960.observer)(e=>{let{record:t,model:l,index:o,_subTableModel:n}=e;return(0,m.jsx)(f.DndProvider,{children:(0,m.jsx)(b.Space,{wrap:!0,size:"middle",className:(0,A.css)`
1198
+ `,components:{header:{wrapper:gg},body:{cell:gv}},footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,m.jsxs)(b.Space,{size:"middle",children:[p&&(x||T)&&(x?(0,m.jsxs)(b.Button,{type:"link",onClick:()=>g(k,F),disabled:f,children:[(0,m.jsx)(to.PlusOutlined,{}),P("Add new")]}):(0,m.jsx)(aQ._T,{message:P("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(b.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),P("Add new")]})})),h&&(0,m.jsxs)(b.Button,{type:"link",disabled:f,onClick:()=>y(k,F),children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",P("Select record")]})]})})})};class gb extends uC{get collection(){return this.context.collection}get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.context.fieldPath}),this.context.defineProperty("disableFieldClickToOpen",{value:!0}),this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}async onDispatchEventStart(e){"beforeRender"===e&&(this.context.defineProperty("associationModel",{value:this}),this.onAddRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openAddRecordView",{setCurrentPage:e,currentPageSize:t})},this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openSelectRecordView",{setCurrentPage:e,currentPageSize:t})})}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}set onAddRecordClick(e){this.setProps({onAddRecordClick:e})}async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}getBaseColumns(e){return e.mapSubModels("subTableColumns",t=>t.getColumnProps(e)).filter(e=>!(null==e?void 0:e.hidden))}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}render(){var e,t,l;let o=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),n=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,o,l)};return(0,m.jsx)(g_,{...this.props,collection:this.collection,baseColumns:this.getBaseColumns(this),model:this,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,onResetFieldValue:n})}constructor(...e){super(...e),this.disableTitleField=!0,this.defaultOverflowMode="ellipsis",this.updateAssociation=!0,this.selectedRows=f.observable.ref([])}}gb.registerFlow({key:"advanceSubTableAssociation",title:(0,f.tExpr)("Association table settings"),steps:{init:{async handler(e){await e.model.applySubModelsBeforeRenderFlows("subTableColumns")}},quickEdit:{title:(0,f.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},defaultParams:{editable:!1},handler(e,t){e.model.setProps("editable",t.editable)},async afterParamsSave(e,t,l){(null==t?void 0:t.editable)===(null==l?void 0:l.editable)||e.model.mapSubModels("subTableColumns",e=>{var l,o,n,i;let r=null==e||null==(l=e.getFlow)?void 0:l.call(e,"tableColumnSettings");if(!(null==r||null==(o=r.getStep)?void 0:o.call(r,"quickEdit")))return;let a=null==(n=e.getStepParams)?void 0:n.call(e,"tableColumnSettings","quickEdit");if(a&&Object.prototype.hasOwnProperty.call(a,"editable"))return;let s=!!(null==e||null==(i=e.collectionField)?void 0:i.readonly),d=!!(null==e?void 0:e.associationPathName);e.setProps("editable",!s&&!d&&!!t.editable)})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),gb.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openAddRecordView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup (Add new)"),hideInSettings(e){var t,l,o;return!1===(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowAddNew"))?void 0:t.allowAddNew)},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;let u={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},c=e.inputArgs.mode||t.mode||"drawer",p=e.inputArgs.size||t.size||"medium",h=(null==e?void 0:e.item)??{value:("function"==typeof(null==e?void 0:e.getFormValues)?e.getFormValues():e.formValues)??e.record},f=null==e||null==(l=e.getPropertyOptions)?void 0:l.call(e,"item"),g=Array.isArray(null==(n=e.model)||null==(o=n.props)?void 0:o.value)?e.model.props.value.length:0,v=g+1,y=null==(i=e.collectionField)?void 0:i.resourceName,_=(null==h?void 0:h.value)?null==(s=e.collectionField)||null==(a=s.collection)||null==(r=a.getFilterByTK)?void 0:r.call(a,h.value):void 0,b=uI(e,e.inputArgs);e.viewer.open({type:c,width:u[c][p],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(d=e.collectionField)?void 0:d.target,...y&&null!=_?{associationName:y,sourceId:_}:{},collectionField:e.collectionField,parentItem:h,parentItemMeta:null==f?void 0:f.meta,parentItemResolver:null==f?void 0:f.resolveOnServer,itemIndex:g,itemLength:v,openerUids:b},content:()=>(0,m.jsx)(gp,{model:e.model,scene:"create"}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===c?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gb.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openSelectRecordView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},n=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",i=e.inputArgs.size||t.size||"medium";e.model.selectedRows.value=e.model.props.value||[];let r=e.inputArgs.currentItemValue??e.model.props.value??[];e.viewer.open({type:n,width:o[n][i],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:r}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.props.value,renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=e.model.props.value||[],n=e.collection.filterTargetKey,i=[...o,...l.map(e=>({...e,__is_stored__:!0}))],r=new Map,a=[];for(let e of i){let t=gf(e,n);if(null==t){a.push(e);continue}r.has(t)||(r.set(t,e),a.push(e))}e.model.selectedRows.value=a}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===n?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gb.registerFlow({key:"AdvancedSubTableUpdateRowSettings",on:"updateRow",steps:{updateRow:{async handler(e,t){var l;let o,n=e.inputArgs.updatedRecord,i=(null==(l=e.model.props)?void 0:l.value)||[],r=e.collection.filterTargetKey,a=n[r],s=-1;n.__is_new__?s=i.findIndex(e=>e.__index__===n.__index__):a&&(s=i.findIndex(e=>e[r]===a)),-1===s?o=[...i,{...n,__is_new__:!0,__index__:(0,io.uid)()}]:(o=[...i])[s]={...i[s],...n},e.model.props.onChange(o);let d=Math.ceil(o.length/e.model.currentPageSize);e.model.setCurrentPage(d)}}}}),gb.registerFlow({key:"AdvancedSubTableRemoveRowSettings",on:"removeRow",steps:{removeRow:{async handler(e,t){var l;let o=e.inputArgs.removeRecord,n=e.collection.filterTargetKey,i=(null==(l=e.model.props)?void 0:l.value)||[],r="object"==typeof o?o[n]:o,a=-1;if(-1===(a=o.__is_new__?i.findIndex(e=>e.__index__===o.__index__):i.findIndex(e=>e[n]===r)))return i;let s=i.slice();s.splice(a,1),e.model.props.onChange(s)}}}}),gb.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,io.uid)()})}}}}),gb.define({label:(0,f.tExpr)("Subtable (Popup editing)"),createModelOptions:{use:"PopupSubTableFieldModel",subModels:{subTableColumns:[{use:"PopupSubTableActionsColumnModel",subModels:{actions:[{use:"PopupSubTableEditActionModel"},{use:"PopupSubTableRemoveActionModel"}]}}]}}}),f.EditableItemModel.bindModelToInterface("PopupSubTableFieldModel",["m2m","o2m","mbm"],{order:300,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class gx extends gm{async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("click",{event:e,...this.getInputArgs()},{debounce:!0})})}constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("Remove")}}}gx.define({label:(0,f.tExpr)("Remove")}),gx.registerFlow({key:"subTableRemoveActionSettings",steps:{disableProps:{async handler(e,t){var l,o,n;if(!e.model.context.associationModel)return;let i=null==(o=(n=e.model.context.associationModel).getStepParams)||null==(l=o.call(n,"advanceSubTableAssociation","allowDisassociation"))?void 0:l.allowDisassociation,r=e.record;!1!==i||r.__is_new__||r.__is_stored__?e.model.setProps({disabled:!1}):e.model.setProps({disabled:!0})}}}}),gx.registerFlow({key:"deleteSettings",title:(0,f.tExpr)("Delete settings"),on:"click",steps:{confirm:{use:"confirm",defaultParams:{enable:!0,title:(0,f.tExpr)("Remove record"),content:(0,f.tExpr)("Are you sure you want to remove it?")}},delete:{async handler(e,t){e.model.context.associationModel.dispatchEvent("removeRow",{removeRecord:e.record})}}}}),gx.registerFlow({key:"enableRemoveChange",on:"enableRemoveChange",steps:{pageRefresh:{handler(e,t){console.log(e,999999)}}}});class gM extends aW{}gM.registerActionModels({PopupSubTableEditActionModel:gh,PopupSubTableRemoveActionModel:gx});let gw=(0,__rspack_external__formily_reactive_react_41406960.observer)(e=>{let{record:t,model:l,index:o,_subTableModel:n}=e;return(0,m.jsx)(f.DndProvider,{children:(0,m.jsx)(b.Space,{wrap:!0,size:"middle",className:(0,A.css)`
1199
1199
  > div:empty {
1200
1200
  display: none;
1201
1201
  }
package/lib/index.js CHANGED
@@ -1101,7 +1101,7 @@ ctx.render(\`
1101
1101
  white-space: nowrap;
1102
1102
  width: calc(${this.props.width}px - 16px);
1103
1103
  opacity: ${this.hidden?"0.3":"1"};
1104
- `,children:[this.props.required&&(0,m.jsx)("span",{style:{color:"#ff4d4f",marginRight:4,userSelect:"none",fontFamily:"SimSun, sans-serif"},children:"*"}),this.props.title]})})}),t=this.render();return{...this.props,ellipsis:!0,title:this.props.tooltip?(0,m.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,m.jsx)(x.Tooltip,{title:this.props.tooltip,children:(0,m.jsx)(to.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({record:e,recordIndex:t,key:t,width:this.props.width,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,model:this}),hidden:this.hidden&&!this.context.flowSettingsEnabled,render:e=>{let{record:l,rowIndex:o}=e||{};return(0,m.jsx)(f.FlowModelProvider,{model:this,children:(0,m.jsx)(react_error_boundary__rspack_import_38.ErrorBoundary,{FallbackComponent:f.FlowErrorFallback,children:(()=>{let i=this.__autoFlowError;if(i)throw i;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,m.jsx)(fo,{targetModel:this}):(0,m.jsx)(x.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,m.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,m.jsx)(mW,{collection:this.parent.context.collectionField.targetCollection})})()})})}}}renderItem(){return e=>{var t,l,o,i,n,r,a,s,d,u,c,p,h,f,g;let{value:v,id:y,rowIdx:b,record:x,parentFieldIndex:M,parentItem:_}=e||{},S=M??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldIndex)??(null==(o=this.context)?void 0:o.fieldIndex),w=Array.isArray(S)?S:[],F=w.length?w.join("|"):"root",k=(null==(n=this.parent)||null==(i=n.collection)?void 0:i.filterTargetKey)??(null==(s=this.parent)||null==(a=s.context)||null==(r=a.collection)?void 0:r.filterTargetKey),C=(0,at.r5)(x,k)??`row:${String(b)}`,A=`row:${F}:${C}:${String(b)}`,P=this.subModels.field,T=[A,this.props.pattern,this.props.readPretty,this.props.titleField,this.props.__displayFieldRefreshKey,null==P?void 0:P.uid,null==P?void 0:P.use,null==P||null==(d=P.constructor)?void 0:d.name,null==P||null==(u=P.props)?void 0:u.clickToOpen,null==P||null==(c=P.props)?void 0:c.displayStyle,null==P||null==(p=P.props)?void 0:p.overflowMode,null==P||null==(h=P.props)?void 0:h.titleField,null==P||null==(g=P.props)||null==(f=g.fieldNames)?void 0:f.label].filter(e=>null!=e).join(":"),I=(()=>{var e,t,l,o,i,n,r,a;let s=this.createFork({},A);s.context.defineProperty("subTableRowFork",{value:!0});let d=(null==(e=this.parent)?void 0:e.fieldPath)??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldPath)??(null==(i=this.parent)||null==(o=i.props)?void 0:o.name),u=(null==(a=this.parent)||null==(r=a.context)||null==(n=r.collectionField)?void 0:n.name)||String(d||"").split(".").filter(Boolean).pop(),c=Number(b);u&&Number.isFinite(c)&&s.context.defineProperty("fieldIndex",{value:[...w,`${u}:${c}`]});let p=()=>{var e,t,l,o;return fc((null==(e=s.context)?void 0:e.form)||(null==(o=this.context)||null==(l=o.blockModel)||null==(t=l.context)?void 0:t.form),s.context.fieldIndex,x)},m=()=>{var e,t;return _??(null==(t=this.parent)||null==(e=t.context)?void 0:e.item)??hE(this.getParentFormValues())},h=hD({valueAccessor:p,parentItemAccessor:m,indexAccessor:()=>Number.isFinite(c)?c:void 0,lengthAccessor:()=>{var e,t;let l=null==(t=this.parent)||null==(e=t.props)?void 0:e.value;return Array.isArray(l)?l.length:void 0}});return s.context.defineProperty("item",{get:h,...this.createRowItemContextPropertyOptions({resolverPropertiesAccessor:p,parentItemAccessor:m,showParentIndex:w.length>0})}),s})();return(0,m.jsx)(fb,{value:v,record:x,rowIdx:b,id:y,parent:this,parentFieldIndex:w,parentItem:_,rowFork:I,memoKey:T,width:this.props.width,commitOnChange:this.hasFormulaColumn||this.hasFormValueDrivenDataScopeColumn})}}}function fM(e,t){return!!e.length&&!(e.length>t.length)&&e.every((e,l)=>e===t[l])}function f_(e,t){return fM(e,t)||fM(t,e)}function fS(e){let t=Array.isArray(e)?e:"string"==typeof e?[e]:null;if(!t)return null;let l=t.flatMap(e=>"number"==typeof e?[e]:"string"!=typeof e?[]:(0,rJ.EA)(e).filter(e=>"object"!=typeof e));return l.length?l:null}function fw(e,t){let l=fS(e);return!!l&&(Array.isArray(t)?t:[]).some(e=>{let t=fS(e);return!!t&&f_(l,t)})}function fF(e){let{t}=(0,v.useTranslation)(),{onChange:l,columns:o,disabled:i,allowAddNew:r,components:a,allowSelectExistingRecord:s,onSelectExitRecordClick:d,allowDisassociation:u,pageSize:c,allowCreate:p,isConfigMode:h,parentFieldIndex:f,parentItem:g,resetPage:y,filterTargetKey:b="id",getCurrentValue:M,fieldPathArray:_,formValuesChangeEmitter:S,onResetFieldValue:w}=e,[F,k]=(0,n.useState)(1),[C,P]=(0,n.useState)(c),[,T]=(0,n.useState)(0),I=M(),L=(0,n.useMemo)(()=>(0,at.$4)(I),[I]),R=n.default.useCallback(e=>(0,at.r5)(e,b),[b]);(0,n.useEffect)(()=>{P(c)},[c]),(0,n.useEffect)(()=>{y&&k(1)},[y]),(0,n.useEffect)(()=>{if(!(null==S?void 0:S.on)||!(null==S?void 0:S.off))return;let e=e=>{fw(_,null==e?void 0:e.changedPaths)&&T(e=>e+1)};return S.on("formValuesChange",e),()=>{S.off("formValuesChange",e)}},[_,S]),(0,n.useEffect)(()=>{if(!(null==S?void 0:S.on)||!(null==S?void 0:S.off)||!w)return;let e=()=>{w(),T(e=>e+1)};return S.on("onFieldReset",e),()=>{S.off("onFieldReset",e)}},[S,w]);let j=n.default.useCallback(e=>null==l?void 0:l((0,at.$4)(e)),[l]),D=n.default.useCallback(()=>(0,at.$4)(M()),[M]);(0,n.useEffect)(()=>{L!==I&&j(L)},[j,L,I]);let E=(0,n.useMemo)(()=>({style:{position:"absolute",right:"0px",bottom:"0px"},current:F,pageSize:C,total:L.length,onChange:(e,t)=>{k(e),P(t)},showSizeChanger:!0,showTotal:e=>t("Total {{count}} items",{count:e})}),[F,C,L.length,t]),Y=()=>{if(!1===p)return;let e={__is_new__:!0};o.forEach(t=>{e[t.dataIndex]=void 0});let t=[...D(),e];k(Math.ceil(t.length/C)),j(t)},N=e=>{let t=[...D()];t.splice(e,1);let l=Math.ceil(t.length/C);k(F>l?l:F),j(t)},O=(e,t,l)=>{j(D().map((o,i)=>i===e?{...o,[t]:l}:o))},B=o.map(e=>({...e,render:(t,l,o)=>{let i=(F-1)*C+o,n=R(l)??`row:${i}`,r=`${n}:${i}`,a=e.dataIndex??e.key??"cell";if(e.render)return e.render({record:l,rowIdx:i,id:`field-${String(a)}-${r}`,value:t,parentFieldIndex:f,parentItem:g,onChange:t=>{var l;O(i,e.dataIndex,(null==t||null==(l=t.target)?void 0:l.value)??t)},"aria-describedby":`field-${String(a)}-${r}`})}})).concat([!i&&{title:"",key:"delete",width:50,align:"center",fixed:"right",render:(e,t,l)=>{let o=(F-1)*C+l;if(u||t.__is_new__||t.__is_stored__)return(0,m.jsx)("div",{onMouseDown:e=>{var t;let l=document.activeElement;!l||e.currentTarget.contains(l)||null==(t=l.blur)||t.call(l)},onClick:()=>{setTimeout(()=>{N(o)})},children:(0,m.jsx)(to.CloseOutlined,{style:{cursor:"pointer",color:"gray"}})})}}]).filter(Boolean),V=(0,n.useMemo)(()=>{if(!L.length)return[];let e=(F-1)*C;return L.slice(e,e+C)},[L,F,C]);return(0,m.jsx)(x.Form.Item,{children:(0,m.jsx)(x.Table,{dataSource:V,columns:B,rowKey:e=>R(e)??"",tableLayout:"fixed",scroll:{x:"max-content"},pagination:E,locale:{emptyText:(0,m.jsx)("span",{children:i?t("No data"):r&&s?t("Please add or select record"):r?t("Please add record"):s?t("Please select record"):t("No data")})},components:a??{},className:(0,A.css)`
1104
+ `,children:[this.props.required&&(0,m.jsx)("span",{style:{color:"#ff4d4f",marginRight:4,userSelect:"none",fontFamily:"SimSun, sans-serif"},children:"*"}),this.props.title]})})}),t=this.render();return{...this.props,ellipsis:!0,title:this.props.tooltip?(0,m.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,m.jsx)(x.Tooltip,{title:this.props.tooltip,children:(0,m.jsx)(to.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({record:e,recordIndex:t,key:t,width:this.props.width,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,model:this}),hidden:this.hidden&&!this.context.flowSettingsEnabled,render:e=>{let{record:l,rowIndex:o}=e||{};return(0,m.jsx)(f.FlowModelProvider,{model:this,children:(0,m.jsx)(react_error_boundary__rspack_import_38.ErrorBoundary,{FallbackComponent:f.FlowErrorFallback,children:(()=>{let i=this.__autoFlowError;if(i)throw i;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,m.jsx)(fo,{targetModel:this}):(0,m.jsx)(x.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,m.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,m.jsx)(mW,{collection:this.parent.context.collectionField.targetCollection})})()})})}}}renderItem(){return e=>{var t,l,o,i,n,r,a,s,d,u,c,p,h,f,g;let{value:v,id:y,rowIdx:b,record:x,parentFieldIndex:M,parentItem:_}=e||{},S=M??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldIndex)??(null==(o=this.context)?void 0:o.fieldIndex),w=Array.isArray(S)?S:[],F=w.length?w.join("|"):"root",k=(null==(n=this.parent)||null==(i=n.collection)?void 0:i.filterTargetKey)??(null==(s=this.parent)||null==(a=s.context)||null==(r=a.collection)?void 0:r.filterTargetKey),C=(0,at.r5)(x,k)??`row:${String(b)}`,A=`row:${F}:${C}:${String(b)}`,P=this.subModels.field,T=[A,this.props.pattern,this.props.readPretty,this.props.titleField,this.props.__displayFieldRefreshKey,null==P?void 0:P.uid,null==P?void 0:P.use,null==P||null==(d=P.constructor)?void 0:d.name,null==P||null==(u=P.props)?void 0:u.clickToOpen,null==P||null==(c=P.props)?void 0:c.displayStyle,null==P||null==(p=P.props)?void 0:p.overflowMode,null==P||null==(h=P.props)?void 0:h.titleField,null==P||null==(g=P.props)||null==(f=g.fieldNames)?void 0:f.label].filter(e=>null!=e).join(":"),I=(()=>{var e,t,l,o,i,n,r,a;let s=this.createFork({},A);s.context.defineProperty("subTableRowFork",{value:!0});let d=(null==(e=this.parent)?void 0:e.fieldPath)??(null==(l=this.parent)||null==(t=l.context)?void 0:t.fieldPath)??(null==(i=this.parent)||null==(o=i.props)?void 0:o.name),u=(null==(a=this.parent)||null==(r=a.context)||null==(n=r.collectionField)?void 0:n.name)||String(d||"").split(".").filter(Boolean).pop(),c=Number(b);u&&Number.isFinite(c)&&s.context.defineProperty("fieldIndex",{value:[...w,`${u}:${c}`]});let p=()=>{var e,t,l,o;return fc((null==(e=s.context)?void 0:e.form)||(null==(o=this.context)||null==(l=o.blockModel)||null==(t=l.context)?void 0:t.form),s.context.fieldIndex,x)},m=()=>{var e,t;return _??(null==(t=this.parent)||null==(e=t.context)?void 0:e.item)??hE(this.getParentFormValues())},h=hD({valueAccessor:p,parentItemAccessor:m,indexAccessor:()=>Number.isFinite(c)?c:void 0,lengthAccessor:()=>{var e,t;let l=null==(t=this.parent)||null==(e=t.props)?void 0:e.value;return Array.isArray(l)?l.length:void 0}});return s.context.defineProperty("item",{get:h,...this.createRowItemContextPropertyOptions({resolverPropertiesAccessor:p,parentItemAccessor:m,showParentIndex:w.length>0})}),s})();return(0,m.jsx)(fb,{value:v,record:x,rowIdx:b,id:y,parent:this,parentFieldIndex:w,parentItem:_,rowFork:I,memoKey:T,width:this.props.width,commitOnChange:this.hasFormulaColumn||this.hasFormValueDrivenDataScopeColumn})}}}function fM(e,t){return!!e.length&&!(e.length>t.length)&&e.every((e,l)=>e===t[l])}function f_(e,t){return fM(e,t)||fM(t,e)}function fS(e){let t=Array.isArray(e)?e:"string"==typeof e?[e]:null;if(!t)return null;let l=t.flatMap(e=>"number"==typeof e?[e]:"string"!=typeof e?[]:(0,rJ.EA)(e).filter(e=>"object"!=typeof e));return l.length?l:null}function fw(e,t){let l=fS(e);return!!l&&(Array.isArray(t)?t:[]).some(e=>{let t=fS(e);return!!t&&f_(l,t)})}function fF(e){let{t}=(0,v.useTranslation)(),{token:l}=x.theme.useToken(),{onChange:o,columns:i,disabled:r,allowAddNew:a,components:s,allowSelectExistingRecord:d,onSelectExitRecordClick:u,allowDisassociation:c,pageSize:p,allowCreate:h,isConfigMode:f,parentFieldIndex:g,parentItem:y,resetPage:b,filterTargetKey:M="id",getCurrentValue:_,fieldPathArray:S,formValuesChangeEmitter:w,onResetFieldValue:F}=e,[k,C]=(0,n.useState)(1),[P,T]=(0,n.useState)(p),[,I]=(0,n.useState)(0),L=_(),R=(0,n.useMemo)(()=>(0,at.$4)(L),[L]),j=n.default.useCallback(e=>(0,at.r5)(e,M),[M]);(0,n.useEffect)(()=>{T(p)},[p]),(0,n.useEffect)(()=>{b&&C(1)},[b]),(0,n.useEffect)(()=>{if(!(null==w?void 0:w.on)||!(null==w?void 0:w.off))return;let e=e=>{fw(S,null==e?void 0:e.changedPaths)&&I(e=>e+1)};return w.on("formValuesChange",e),()=>{w.off("formValuesChange",e)}},[S,w]),(0,n.useEffect)(()=>{if(!(null==w?void 0:w.on)||!(null==w?void 0:w.off)||!F)return;let e=()=>{F(),I(e=>e+1)};return w.on("onFieldReset",e),()=>{w.off("onFieldReset",e)}},[w,F]);let D=n.default.useCallback(e=>null==o?void 0:o((0,at.$4)(e)),[o]),E=n.default.useCallback(()=>(0,at.$4)(_()),[_]);(0,n.useEffect)(()=>{R!==L&&D(R)},[D,R,L]);let Y=(0,n.useMemo)(()=>({style:{position:"absolute",right:"0px",bottom:"0px"},current:k,pageSize:P,total:R.length,onChange:(e,t)=>{C(e),T(t)},showSizeChanger:!0,showTotal:e=>t("Total {{count}} items",{count:e})}),[k,P,R.length,t]),N=()=>{if(!1===h)return;let e={__is_new__:!0};i.forEach(t=>{e[t.dataIndex]=void 0});let t=[...E(),e];C(Math.ceil(t.length/P)),D(t)},O=e=>{let t=[...E()];t.splice(e,1);let l=Math.ceil(t.length/P);C(k>l?l:k),D(t)},B=(e,t,l)=>{D(E().map((o,i)=>i===e?{...o,[t]:l}:o))},V=i.map(e=>({...e,render:(t,o,i)=>{let n=(k-1)*P+i,r=j(o)??`row:${n}`,a=`${r}:${n}`,s=e.dataIndex??e.key??"cell";return"_empty"===e.key?(0,m.jsx)("div",{style:{minHeight:l.controlHeight}}):e.render?e.render({record:o,rowIdx:n,id:`field-${String(s)}-${a}`,value:t,parentFieldIndex:g,parentItem:y,onChange:t=>{var l;B(n,e.dataIndex,(null==t||null==(l=t.target)?void 0:l.value)??t)},"aria-describedby":`field-${String(s)}-${a}`}):void 0}})).concat([!r&&{title:"",key:"delete",width:50,align:"center",fixed:"right",render:(e,t,l)=>{let o=(k-1)*P+l;if(c||t.__is_new__||t.__is_stored__)return(0,m.jsx)("div",{onMouseDown:e=>{var t;let l=document.activeElement;!l||e.currentTarget.contains(l)||null==(t=l.blur)||t.call(l)},onClick:()=>{setTimeout(()=>{O(o)})},children:(0,m.jsx)(to.CloseOutlined,{style:{cursor:"pointer",color:"gray"}})})}}]).filter(Boolean),H=(0,n.useMemo)(()=>{if(!R.length)return[];let e=(k-1)*P;return R.slice(e,e+P)},[R,k,P]);return(0,m.jsx)(x.Form.Item,{children:(0,m.jsx)(x.Table,{dataSource:H,columns:V,rowKey:e=>j(e)??"",tableLayout:"fixed",scroll:{x:"max-content"},pagination:Y,locale:{emptyText:(0,m.jsx)("span",{children:r?t("No data"):a&&d?t("Please add or select record"):a?t("Please add record"):d?t("Please select record"):t("No data")})},components:s??{},className:(0,A.css)`
1105
1105
  .ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content {
1106
1106
  display: inline;
1107
1107
  }
@@ -1112,7 +1112,7 @@ ctx.render(\`
1112
1112
  margin-bottom: 4px;
1113
1113
  }
1114
1114
  }
1115
- `,footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:"36px"},children:(0,m.jsxs)(x.Space,{children:[r&&(p||h)&&(p?(0,m.jsxs)(x.Button,{type:"link",onClick:Y,disabled:i,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]}):(0,m.jsx)(aQ._T,{message:t("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(x.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]})})),s&&(0,m.jsxs)(x.Button,{type:"link",onClick:()=>d(k,C),disabled:i,children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",t("Select record")]})]})})})})}fx.renderMode=f.ModelRenderMode.RenderFunction,fx.fieldComponentContext=fe,fx.define({label:(0,f.tExpr)("Table column"),icon:"TableColumn",createModelOptions:{use:"SubTableColumnModel"},sort:0}),fx.registerFlow({key:"subTableColumnSettings",sort:500,title:(0,f.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l;let o=e.model.context.collectionField;if(!o)return;e.model.setProps(o.getComponentProps()),e.model.setProps("title",o.title),e.model.setProps("dataIndex",o.name),await e.model.applySubModelsBeforeRenderFlows("field");let i=e.model.context.blockModel;null==i||null==(l=i.addAppends)||l.call(i,e.model.fieldPath)}},title:{title:(0,f.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,f.tExpr)("Column title")},"x-reactions":t=>{var l;let{model:o}=e,i=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+i}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath.split(".").pop()})}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,f.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,i)=>(0,m.jsxs)(m.Fragment,{children:[l,(0,m.jsx)(x.Divider,{style:{margin:"4px 0"}}),(0,m.jsx)(mZ,{setOpen:o,handleChange:i,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:200},handler(e,t){e.model.setProps("width",mQ(t.width))}},aclCheck:{use:"aclCheck",async handler(e,t){var l,o,i,n,r,a;if(!e.collectionField)return;let s=e.blockModel.context.actionName,d=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,fields:[e.collectionField.name],actionName:"update"}),u=await e.aclCheck({dataSourceKey:null==(i=e.dataSource)?void 0:i.key,resourceName:null==(n=e.collectionField)?void 0:n.collectionName,fields:[e.collectionField.name],actionName:"create"});"update"===s&&(await e.aclCheck({dataSourceKey:null==(r=e.dataSource)?void 0:r.key,resourceName:null==(a=e.collectionField)?void 0:a.collectionName,fields:[e.collectionField.name],actionName:"view"})||e.model.setProps({aclViewDisabled:!0})),d||e.model.setProps({aclDisabled:!0}),u||e.model.setProps({aclCreateDisabled:!0})}},subModel:{title:(0,f.tExpr)("Preview field component"),uiSchema:e=>{if(!e.model.subModels.field.constructor.isLargeField)return null;let t=f.DisplayItemModel.getBindingsByField(e,e.model.collectionField);return 1===t.length?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:t.map(t=>{var l;return{label:(null==(l=e.engine.getModelClass(t.modelName).meta)?void 0:l.label)||t.modelName,value:t.modelName,defaultProps:t.defaultProps}})}}},defaultParams:e=>{let t=f.DisplayItemModel.getDefaultBindingByField(e,e.model.collectionField);return{use:null==t?void 0:t.modelName}},async handler(e,t){if(!e.model.subModels.field.constructor.isLargeField)return null;let l=e.model.collectionField,o=t.use,i=e.model.subModels.field.setSubModel("readPrettyField",{use:o,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:l.collection.name,fieldPath:e.model.fieldPath}}}});await i.dispatchEvent("beforeRender")}},initialValue:{title:(0,f.tExpr)("Default value"),uiSchema:{},defaultParams:()=>({}),handler(){}},required:{title:(0,f.tExpr)("Required"),use:"required"},validation:{title:(0,f.tExpr)("Validation"),use:"validation"},model:{use:"fieldComponent",title:(0,f.tExpr)("Field component")},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),hideInSettings(e){var t;return!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||(null==(t=e.model.subModels.field)?void 0:t.disableTitleField)},defaultParams:e=>({label:fg(e.model)}),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||!t.label||t.label===l.label)return null;let i=e.collectionField.targetCollection,n=null==i?void 0:i.getField(t.label);if(!n)return null;let r=d6.getDefaultBindingByField(e,n),a=e.model.subModels.field,s=d1(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:i.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,n):null==r?void 0:r.defaultProps;e.model.setProps({titleField:t.label,...null==(o=n.getComponentProps)?void 0:o.call(n)}),d&&d!==s?await d2({parentModel:e.model,targetUse:d,defaultProps:{...c||{},titleField:t.label},fieldSettingsInit:u}):a&&(a.setProps({...c||{},titleField:t.label}),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}))},handler(e,t){var l,o,i;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model))return null;e.model.setProps({titleField:t.label,...null==(i=e.collectionField.targetCollection)||null==(o=i.getField(t.label))||null==(l=o.getComponentProps)?void 0:l.call(o)})}},pattern:{use:"pattern"},fixed:{title:(0,f.tExpr)("Fixed"),use:"fixed"}}}),fx.define({hide:!0,label:(0,f.tExpr)("Table column"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search fields")});let fk=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:["SubTableColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},fC=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})})});class fA extends uC{getCurrentValue(){var e,t,l,o,i,n;let r=Array.isArray(this.props.value)?this.props.value:[],a=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray);if(!Array.isArray(a)||!a.length)return r;let s=null==(n=this.context.blockModel)||null==(i=n.context)||null==(o=i.form)||null==(l=o.getFieldValue)?void 0:l.call(o,a);return Array.isArray(s)?s:r}get collection(){return this.context.collection}getColumns(){let{enableIndexColumn:e}=this.props;return mI([e&&{key:"__index__",width:48,align:"center",fixed:"left",render:e=>e.rowIdx+1},...this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"_empty"}),this.context.flowSettingsEnabled&&{key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(fk,{model:this})}].filter(Boolean))}render(){var e,t,l;let o=this.getColumns(),i={header:{wrapper:fC}},n=!!this.context.flowSettingsEnabled,r=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),a=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,r,l)};return(0,m.jsx)(fF,{...this.props,columns:o,components:i,isConfigMode:n,parentFieldIndex:this.context.fieldIndex,parentItem:this.context.item,filterTargetKey:this.collection.filterTargetKey,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,fieldPathArray:r,getCurrentValue:()=>this.getCurrentValue(),onResetFieldValue:a})}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openView",{setCurrentPage:e,currentPageSize:t})}}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.updateAssociation=!0}}function fP(e,t){var l;return(null==(l=e())?void 0:l.item)??hE(t())}fA.registerFlow({key:"subTableColumnSettings",title:(0,f.tExpr)("Sub-table settings"),sort:300,steps:{init:{async handler(e,t){await e.model.applySubModelsBeforeRenderFlows("columns")}},enableIndexColumn:{title:(0,f.tExpr)("Show row numbers"),uiMode:{type:"switch",key:"enableIndexColumn"},defaultParams:{enableIndexColumn:!0},handler(e,t){e.model.setProps({enableIndexColumn:t.enableIndexColumn})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),fA.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"subTableColumnSettings","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},i=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",n=e.inputArgs.size||t.size||"medium",r=e.model.getCurrentValue();e.model.selectedRows.value=r;let a=e.inputArgs.currentItemValue??r;e.viewer.open({type:i,width:o[i][n],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:a}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.getCurrentValue(),renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=[...e.model.getCurrentValue(),...l.map(e=>({...e,__is_stored__:!0}))].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));e.model.selectedRows.value=o}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===i?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),fA.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,nn.uid)()})}}}}),fA.define({label:(0,f.tExpr)("Subtable (Inline editing)")}),ui.bindModelToInterface("SubTableFieldModel",["m2m","o2m","mbm"],{order:200,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class fT extends uC{onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.parent.fieldPath}),"update"===this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}}let fI=e=>{let t=(0,f.useFlowModel)(),l=t.subModels.grid,o=t.context.fieldIndex,i=t.context.record,r=n.default.useMemo(()=>{if(null==o)return l;let e=l.createFork({},`${o}`);return e.context.defineProperty("fieldIndex",{get:()=>o}),e.context.defineProperty("record",{get:()=>i,cache:!1}),e.context.defineProperty("fieldKey",{get:()=>o}),e},[l,o,i]);return(0,n.useEffect)(()=>{e.disabled!==r.context.parentDisabled&&(r.mapSubModels("items",t=>{t.setProps({disabled:e.disabled})}),r.context.defineProperty("parentDisabled",{get:()=>e.disabled,cache:!1}))},[e.disabled,r]),(0,n.useEffect)(()=>{var e,l;let{value:o,...i}=(null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"item"))||{};r.context.defineProperty("item",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.item},...i,cache:!1})},[r,t]),(0,n.useEffect)(()=>{var e,l;let o=null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"currentObject");o&&r.context.defineProperty("currentObject",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.currentObject},cache:!1,resolveOnServer:null==o?void 0:o.resolveOnServer,serverOnlyWhenContextParams:null==o?void 0:o.serverOnlyWhenContextParams})},[r,t]),(0,m.jsx)(x.Card,{children:(0,m.jsx)(f.FlowModelRenderer,{model:r,showFlowSettings:!1})})};class fL extends fT{onInit(e){var t,l;super.onInit(e),this.context.blockModel.emitter.on("formValuesChange",e=>{this.dispatchEvent("formValuesChange",e,{debounce:!0})});let o=hO({parentContextAccessor:()=>{var e;return null==(e=this.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>this.context.formValues}),i=hD({valueAccessor:()=>this.context.form.getFieldValue(this.props.name),parentItemAccessor:()=>fP(()=>{var e;return null==(e=this.parent)?void 0:e.context},()=>this.context.formValues)});this.context.defineProperty("item",{get:i,...hz({t:this.context.t,title:hN(this.context.t,this.context.collectionField,this.props.name),showIndex:(0,d5.E4)(this.context.collectionField),showParentIndex:Array.isArray(this.context.fieldIndex)&&this.context.fieldIndex.length>0,collectionAccessor:()=>this.context.collection,propertiesAccessor:e=>{var t;return null==e||null==(t=e.item)?void 0:t.value},resolverPropertiesAccessor:()=>this.context.form.getFieldValue(this.props.name),parentCollectionAccessor:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.collection},parentAccessors:o})});let n=null==(t=(l=this.context).getPropertyOptions)?void 0:t.call(l,"currentObject");this.context.defineProperty("currentObject",{get:()=>this.context.form.getFieldValue(this.props.name),cache:!1,resolveOnServer:null==n?void 0:n.resolveOnServer,serverOnlyWhenContextParams:null==n?void 0:n.serverOnlyWhenContextParams})}onMount(){super.onMount(),setTimeout(()=>{this.applyFlow("eventSettings")},100)}render(){return(0,m.jsx)(fI,{...this.props})}constructor(...e){super(...e),this.updateAssociation=!0}}fL.define({label:(0,f.tExpr)("Subform"),createModelOptions:{use:"SubFormFieldModel",subModels:{grid:{use:"FormGridModel"}}}}),fL.registerFlow({key:"eventSettings",title:(0,f.tExpr)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"subFormFieldLinkageRules",afterParamsSave(e){e.model.applyFlow("eventSettings")}}}});let fR=e=>{var t,l;let{name:o,value:i,disabled:r,allowAddNew:a,allowSelectExistingRecord:s,onSelectExitRecordClick:d,allowDisassociation:u,allowCreate:c}=e,p=(0,f.useFlowModel)(),h=p.subModels.grid,g=!!p.context.flowSettingsEnabled,{t:y}=(0,v.useTranslation)(),b=p.context.fieldIndex||[],M=(null==p||null==(l=p.parent)||null==(t=l.context)?void 0:t.fieldPathArray)||[],_=(0,n.useRef)({}),S=p.context.collectionField.name,w=()=>fP(()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}),F=hO({parentContextAccessor:()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}});return(0,n.useEffect)(()=>{h.context.defineProperty("parentDisabled",{get:()=>r,cache:!1})},[r,h.context]),(0,m.jsx)(x.Card,{bordered:!0,style:{position:"relative"},className:(0,A.css)`
1115
+ `,footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:"36px"},children:(0,m.jsxs)(x.Space,{children:[a&&(h||f)&&(h?(0,m.jsxs)(x.Button,{type:"link",onClick:N,disabled:r,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]}):(0,m.jsx)(aQ._T,{message:t("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(x.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),t("Add new")]})})),d&&(0,m.jsxs)(x.Button,{type:"link",onClick:()=>u(C,P),disabled:r,children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",t("Select record")]})]})})})})}fx.renderMode=f.ModelRenderMode.RenderFunction,fx.fieldComponentContext=fe,fx.define({label:(0,f.tExpr)("Table column"),icon:"TableColumn",createModelOptions:{use:"SubTableColumnModel"},sort:0}),fx.registerFlow({key:"subTableColumnSettings",sort:500,title:(0,f.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l;let o=e.model.context.collectionField;if(!o)return;e.model.setProps(o.getComponentProps()),e.model.setProps("title",o.title),e.model.setProps("dataIndex",o.name),await e.model.applySubModelsBeforeRenderFlows("field");let i=e.model.context.blockModel;null==i||null==(l=i.addAppends)||l.call(i,e.model.fieldPath)}},title:{title:(0,f.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,f.tExpr)("Column title")},"x-reactions":t=>{var l;let{model:o}=e,i=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+i}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath.split(".").pop()})}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,f.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,i)=>(0,m.jsxs)(m.Fragment,{children:[l,(0,m.jsx)(x.Divider,{style:{margin:"4px 0"}}),(0,m.jsx)(mZ,{setOpen:o,handleChange:i,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:200},handler(e,t){e.model.setProps("width",mQ(t.width))}},aclCheck:{use:"aclCheck",async handler(e,t){var l,o,i,n,r,a;if(!e.collectionField)return;let s=e.blockModel.context.actionName,d=await e.aclCheck({dataSourceKey:null==(l=e.dataSource)?void 0:l.key,resourceName:null==(o=e.collectionField)?void 0:o.collectionName,fields:[e.collectionField.name],actionName:"update"}),u=await e.aclCheck({dataSourceKey:null==(i=e.dataSource)?void 0:i.key,resourceName:null==(n=e.collectionField)?void 0:n.collectionName,fields:[e.collectionField.name],actionName:"create"});"update"===s&&(await e.aclCheck({dataSourceKey:null==(r=e.dataSource)?void 0:r.key,resourceName:null==(a=e.collectionField)?void 0:a.collectionName,fields:[e.collectionField.name],actionName:"view"})||e.model.setProps({aclViewDisabled:!0})),d||e.model.setProps({aclDisabled:!0}),u||e.model.setProps({aclCreateDisabled:!0})}},subModel:{title:(0,f.tExpr)("Preview field component"),uiSchema:e=>{if(!e.model.subModels.field.constructor.isLargeField)return null;let t=f.DisplayItemModel.getBindingsByField(e,e.model.collectionField);return 1===t.length?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:t.map(t=>{var l;return{label:(null==(l=e.engine.getModelClass(t.modelName).meta)?void 0:l.label)||t.modelName,value:t.modelName,defaultProps:t.defaultProps}})}}},defaultParams:e=>{let t=f.DisplayItemModel.getDefaultBindingByField(e,e.model.collectionField);return{use:null==t?void 0:t.modelName}},async handler(e,t){if(!e.model.subModels.field.constructor.isLargeField)return null;let l=e.model.collectionField,o=t.use,i=e.model.subModels.field.setSubModel("readPrettyField",{use:o,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:l.collection.name,fieldPath:e.model.fieldPath}}}});await i.dispatchEvent("beforeRender")}},initialValue:{title:(0,f.tExpr)("Default value"),uiSchema:{},defaultParams:()=>({}),handler(){}},required:{title:(0,f.tExpr)("Required"),use:"required"},validation:{title:(0,f.tExpr)("Validation"),use:"validation"},model:{use:"fieldComponent",title:(0,f.tExpr)("Field component")},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),hideInSettings(e){var t;return!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||(null==(t=e.model.subModels.field)?void 0:t.disableTitleField)},defaultParams:e=>({label:fg(e.model)}),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model)||!t.label||t.label===l.label)return null;let i=e.collectionField.targetCollection,n=null==i?void 0:i.getField(t.label);if(!n)return null;let r=d6.getDefaultBindingByField(e,n),a=e.model.subModels.field,s=d1(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:i.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,n):null==r?void 0:r.defaultProps;e.model.setProps({titleField:t.label,...null==(o=n.getComponentProps)?void 0:o.call(n)}),d&&d!==s?await d2({parentModel:e.model,targetUse:d,defaultProps:{...c||{},titleField:t.label},fieldSettingsInit:u}):a&&(a.setProps({...c||{},titleField:t.label}),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}))},handler(e,t){var l,o,i;if(!e.collectionField||!e.collectionField.isAssociationField()||!ff(e.model))return null;e.model.setProps({titleField:t.label,...null==(i=e.collectionField.targetCollection)||null==(o=i.getField(t.label))||null==(l=o.getComponentProps)?void 0:l.call(o)})}},pattern:{use:"pattern"},fixed:{title:(0,f.tExpr)("Fixed"),use:"fixed"}}}),fx.define({hide:!0,label:(0,f.tExpr)("Table column"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search fields")});let fk=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:["SubTableColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},fC=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})})});class fA extends uC{getCurrentValue(){var e,t,l,o,i,n;let r=Array.isArray(this.props.value)?this.props.value:[],a=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray);if(!Array.isArray(a)||!a.length)return r;let s=null==(n=this.context.blockModel)||null==(i=n.context)||null==(o=i.form)||null==(l=o.getFieldValue)?void 0:l.call(o,a);return Array.isArray(s)?s:r}get collection(){return this.context.collection}getColumns(){let{enableIndexColumn:e}=this.props;return mI([e&&{key:"__index__",width:48,align:"center",fixed:"left",render:e=>e.rowIdx+1},...this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"_empty"}),this.context.flowSettingsEnabled&&{key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(fk,{model:this})}].filter(Boolean))}render(){var e,t,l;let o=this.getColumns(),i={header:{wrapper:fC}},n=!!this.context.flowSettingsEnabled,r=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),a=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,r,l)};return(0,m.jsx)(fF,{...this.props,columns:o,components:i,isConfigMode:n,parentFieldIndex:this.context.fieldIndex,parentItem:this.context.item,filterTargetKey:this.collection.filterTargetKey,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,fieldPathArray:r,getCurrentValue:()=>this.getCurrentValue(),onResetFieldValue:a})}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openView",{setCurrentPage:e,currentPageSize:t})}}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}constructor(...e){super(...e),this.selectedRows=f.observable.ref([]),this.updateAssociation=!0}}function fP(e,t){var l;return(null==(l=e())?void 0:l.item)??hE(t())}fA.registerFlow({key:"subTableColumnSettings",title:(0,f.tExpr)("Sub-table settings"),sort:300,steps:{init:{async handler(e,t){await e.model.applySubModelsBeforeRenderFlows("columns")}},enableIndexColumn:{title:(0,f.tExpr)("Show row numbers"),uiMode:{type:"switch",key:"enableIndexColumn"},defaultParams:{enableIndexColumn:!0},handler(e,t){e.model.setProps({enableIndexColumn:t.enableIndexColumn})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),fA.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"subTableColumnSettings","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},i=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",n=e.inputArgs.size||t.size||"medium",r=e.model.getCurrentValue();e.model.selectedRows.value=r;let a=e.inputArgs.currentItemValue??r;e.viewer.open({type:i,width:o[i][n],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:a}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.getCurrentValue(),renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=[...e.model.getCurrentValue(),...l.map(e=>({...e,__is_stored__:!0}))].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));e.model.selectedRows.value=o}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===i?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),fA.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,nn.uid)()})}}}}),fA.define({label:(0,f.tExpr)("Subtable (Inline editing)")}),ui.bindModelToInterface("SubTableFieldModel",["m2m","o2m","mbm"],{order:200,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class fT extends uC{onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.parent.fieldPath}),"update"===this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}}let fI=e=>{let t=(0,f.useFlowModel)(),l=t.subModels.grid,o=t.context.fieldIndex,i=t.context.record,r=n.default.useMemo(()=>{if(null==o)return l;let e=l.createFork({},`${o}`);return e.context.defineProperty("fieldIndex",{get:()=>o}),e.context.defineProperty("record",{get:()=>i,cache:!1}),e.context.defineProperty("fieldKey",{get:()=>o}),e},[l,o,i]);return(0,n.useEffect)(()=>{e.disabled!==r.context.parentDisabled&&(r.mapSubModels("items",t=>{t.setProps({disabled:e.disabled})}),r.context.defineProperty("parentDisabled",{get:()=>e.disabled,cache:!1}))},[e.disabled,r]),(0,n.useEffect)(()=>{var e,l;let{value:o,...i}=(null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"item"))||{};r.context.defineProperty("item",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.item},...i,cache:!1})},[r,t]),(0,n.useEffect)(()=>{var e,l;let o=null==t||null==(l=t.context)||null==(e=l.getPropertyOptions)?void 0:e.call(l,"currentObject");o&&r.context.defineProperty("currentObject",{get:()=>{var e;return null==t||null==(e=t.context)?void 0:e.currentObject},cache:!1,resolveOnServer:null==o?void 0:o.resolveOnServer,serverOnlyWhenContextParams:null==o?void 0:o.serverOnlyWhenContextParams})},[r,t]),(0,m.jsx)(x.Card,{children:(0,m.jsx)(f.FlowModelRenderer,{model:r,showFlowSettings:!1})})};class fL extends fT{onInit(e){var t,l;super.onInit(e),this.context.blockModel.emitter.on("formValuesChange",e=>{this.dispatchEvent("formValuesChange",e,{debounce:!0})});let o=hO({parentContextAccessor:()=>{var e;return null==(e=this.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>this.context.formValues}),i=hD({valueAccessor:()=>this.context.form.getFieldValue(this.props.name),parentItemAccessor:()=>fP(()=>{var e;return null==(e=this.parent)?void 0:e.context},()=>this.context.formValues)});this.context.defineProperty("item",{get:i,...hz({t:this.context.t,title:hN(this.context.t,this.context.collectionField,this.props.name),showIndex:(0,d5.E4)(this.context.collectionField),showParentIndex:Array.isArray(this.context.fieldIndex)&&this.context.fieldIndex.length>0,collectionAccessor:()=>this.context.collection,propertiesAccessor:e=>{var t;return null==e||null==(t=e.item)?void 0:t.value},resolverPropertiesAccessor:()=>this.context.form.getFieldValue(this.props.name),parentCollectionAccessor:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.collection},parentAccessors:o})});let n=null==(t=(l=this.context).getPropertyOptions)?void 0:t.call(l,"currentObject");this.context.defineProperty("currentObject",{get:()=>this.context.form.getFieldValue(this.props.name),cache:!1,resolveOnServer:null==n?void 0:n.resolveOnServer,serverOnlyWhenContextParams:null==n?void 0:n.serverOnlyWhenContextParams})}onMount(){super.onMount(),setTimeout(()=>{this.applyFlow("eventSettings")},100)}render(){return(0,m.jsx)(fI,{...this.props})}constructor(...e){super(...e),this.updateAssociation=!0}}fL.define({label:(0,f.tExpr)("Subform"),createModelOptions:{use:"SubFormFieldModel",subModels:{grid:{use:"FormGridModel"}}}}),fL.registerFlow({key:"eventSettings",title:(0,f.tExpr)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"subFormFieldLinkageRules",afterParamsSave(e){e.model.applyFlow("eventSettings")}}}});let fR=e=>{var t,l;let{name:o,value:i,disabled:r,allowAddNew:a,allowSelectExistingRecord:s,onSelectExitRecordClick:d,allowDisassociation:u,allowCreate:c}=e,p=(0,f.useFlowModel)(),h=p.subModels.grid,g=!!p.context.flowSettingsEnabled,{t:y}=(0,v.useTranslation)(),b=p.context.fieldIndex||[],M=(null==p||null==(l=p.parent)||null==(t=l.context)?void 0:t.fieldPathArray)||[],_=(0,n.useRef)({}),S=p.context.collectionField.name,w=()=>fP(()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}),F=hO({parentContextAccessor:()=>{var e;return null==p||null==(e=p.parent)?void 0:e.context},fallbackParentPropertiesAccessor:()=>{var e;return null==p||null==(e=p.context)?void 0:e.formValues}});return(0,n.useEffect)(()=>{h.context.defineProperty("parentDisabled",{get:()=>r,cache:!1})},[r,h.context]),(0,m.jsx)(x.Card,{bordered:!0,style:{position:"relative"},className:(0,A.css)`
1116
1116
  > .ant-card-body > .ant-divider:last-child {
1117
1117
  display: none;
1118
1118
  }
@@ -1178,7 +1178,7 @@ ctx.render(\`
1178
1178
  text-overflow: ellipsis;
1179
1179
  white-space: nowrap;
1180
1180
  width: calc(${i}px - 16px);
1181
- `,children:d})]}):(0,m.jsx)("td",{className:(0,mP.default)(t),...c,children:(0,m.jsxs)("div",{style:{width:i},children:[" ",d]})})}),gy=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"subTableColumns",subModelBaseClasses:["TableColumnModel","TableAssociationFieldGroupModel","TableCustomColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},gb=e=>{var t,l;let{pageSize:o,value:i,size:r,collection:a,baseColumns:s,enableIndexColumn:d=!0,model:u,allowAddNew:c,allowSelectExistingRecord:p,disabled:h,onAddRecordClick:f,onSelectExitRecordClick:g,resetPage:y,allowCreate:b,formValuesChangeEmitter:M,onResetFieldValue:_}=e,[S,w]=(0,n.useState)(1),[F,k]=(0,n.useState)(o),{t:C}=(0,v.useTranslation)(),P=!!(null==(l=u.flowEngine)||null==(t=l.flowSettings)?void 0:t.enabled),[T,I]=(0,n.useState)(i);(0,n.useEffect)(()=>{I(i)},[i]),(0,n.useEffect)(()=>{k(o)},[o]),(0,n.useEffect)(()=>{y&&w(1)},[y]),(0,n.useEffect)(()=>{if(!(null==M?void 0:M.on)||!(null==M?void 0:M.off)||!_)return;let e=()=>{_(),I([])};return M.on("onFieldReset",e),()=>{M.off("onFieldReset",e)}},[M,_]);let L=(0,n.useMemo)(()=>({current:S,pageSize:F,total:null==T?void 0:T.length,onChange:(e,t)=>{w(e),k(t)},showSizeChanger:!0,showTotal:e=>C("Total {{count}} items",{count:e})}),[S,F,T,C]),R=(0,n.useMemo)(()=>{let e=mI([d&&{key:"__index__",width:48,align:"center",fixed:"left",render:(e,t,l)=>(S-1)*F+l+1},...s,{key:"empty"}].filter(Boolean));return P&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(gy,{model:u})}),e},[s,d,S,F,P,u]);return(0,m.jsx)(x.Table,{tableLayout:"fixed",size:r,rowKey:a.filterTargetKey,scroll:{x:"max-content"},dataSource:T,columns:R,pagination:L,locale:{emptyText:(0,m.jsx)("span",{children:h?C("No data"):c&&p?C("Please add or select record"):c?C("Please add record"):p?C("Please select record"):C("No data")})},className:(0,A.css)`
1181
+ `,children:d})]}):(0,m.jsx)("td",{className:(0,mP.default)(t),...c,children:(0,m.jsxs)("div",{style:{width:i},children:[" ",d]})})}),gy=e=>{let{model:t}=e;return(0,m.jsx)(f.AddSubModelButton,{model:t,subModelKey:"subTableColumns",subModelBaseClasses:["TableColumnModel","TableAssociationFieldGroupModel","TableCustomColumnModel"],keepDropdownOpen:!0,children:(0,m.jsx)(f.FlowSettingsButton,{icon:(0,m.jsx)(to.SettingOutlined,{}),children:t.translate("Fields")})})},gb=e=>{var t,l;let{token:o}=x.theme.useToken(),{pageSize:i,value:r,size:a,collection:s,baseColumns:d,enableIndexColumn:u=!0,model:c,allowAddNew:p,allowSelectExistingRecord:h,disabled:f,onAddRecordClick:g,onSelectExitRecordClick:y,resetPage:b,allowCreate:M,formValuesChangeEmitter:_,onResetFieldValue:S}=e,[w,F]=(0,n.useState)(1),[k,C]=(0,n.useState)(i),{t:P}=(0,v.useTranslation)(),T=!!(null==(l=c.flowEngine)||null==(t=l.flowSettings)?void 0:t.enabled),[I,L]=(0,n.useState)(r);(0,n.useEffect)(()=>{L(r)},[r]),(0,n.useEffect)(()=>{C(i)},[i]),(0,n.useEffect)(()=>{b&&F(1)},[b]),(0,n.useEffect)(()=>{if(!(null==_?void 0:_.on)||!(null==_?void 0:_.off)||!S)return;let e=()=>{S(),L([])};return _.on("onFieldReset",e),()=>{_.off("onFieldReset",e)}},[_,S]);let R=(0,n.useMemo)(()=>({current:w,pageSize:k,total:null==I?void 0:I.length,onChange:(e,t)=>{F(e),C(t)},showSizeChanger:!0,showTotal:e=>P("Total {{count}} items",{count:e})}),[w,k,I,P]),j=(0,n.useMemo)(()=>{let e=mI([u&&{key:"__index__",width:48,align:"center",fixed:"left",render:(e,t,l)=>(w-1)*k+l+1},...d,{key:"empty",render:()=>(0,m.jsx)("div",{style:{minHeight:o.controlHeight}})}].filter(Boolean));return T&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,m.jsx)(gy,{model:c})}),e},[d,u,w,k,T,c,o.controlHeight]);return(0,m.jsx)(x.Table,{tableLayout:"fixed",size:a,rowKey:s.filterTargetKey,scroll:{x:"max-content"},dataSource:I,columns:j,pagination:R,locale:{emptyText:(0,m.jsx)("span",{children:f?P("No data"):p&&h?P("Please add or select record"):p?P("Please add record"):h?P("Please select record"):P("No data")})},className:(0,A.css)`
1182
1182
  .ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content {
1183
1183
  display: inline;
1184
1184
  }
@@ -1195,7 +1195,7 @@ ctx.render(\`
1195
1195
  margin-bottom: 4px;
1196
1196
  }
1197
1197
  }
1198
- `,components:{header:{wrapper:gg},body:{cell:gv}},footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,m.jsxs)(x.Space,{size:"middle",children:[c&&(b||P)&&(b?(0,m.jsxs)(x.Button,{type:"link",onClick:()=>f(w,F),disabled:h,children:[(0,m.jsx)(to.PlusOutlined,{}),C("Add new")]}):(0,m.jsx)(aQ._T,{message:C("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(x.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),C("Add new")]})})),p&&(0,m.jsxs)(x.Button,{type:"link",disabled:h,onClick:()=>g(w,F),children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",C("Select record")]})]})})})};class gx extends uC{get collection(){return this.context.collection}get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.context.fieldPath}),this.context.defineProperty("disableFieldClickToOpen",{value:!0}),this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}async onDispatchEventStart(e){"beforeRender"===e&&(this.context.defineProperty("associationModel",{value:this}),this.onAddRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openAddRecordView",{setCurrentPage:e,currentPageSize:t})},this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openSelectRecordView",{setCurrentPage:e,currentPageSize:t})})}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}set onAddRecordClick(e){this.setProps({onAddRecordClick:e})}async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}getBaseColumns(e){return e.mapSubModels("subTableColumns",t=>t.getColumnProps(e)).filter(e=>!(null==e?void 0:e.hidden))}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}render(){var e,t,l;let o=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),i=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,o,l)};return(0,m.jsx)(gb,{...this.props,collection:this.collection,baseColumns:this.getBaseColumns(this),model:this,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,onResetFieldValue:i})}constructor(...e){super(...e),this.disableTitleField=!0,this.defaultOverflowMode="ellipsis",this.updateAssociation=!0,this.selectedRows=f.observable.ref([])}}gx.registerFlow({key:"advanceSubTableAssociation",title:(0,f.tExpr)("Association table settings"),steps:{init:{async handler(e){await e.model.applySubModelsBeforeRenderFlows("subTableColumns")}},quickEdit:{title:(0,f.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},defaultParams:{editable:!1},handler(e,t){e.model.setProps("editable",t.editable)},async afterParamsSave(e,t,l){(null==t?void 0:t.editable)===(null==l?void 0:l.editable)||e.model.mapSubModels("subTableColumns",e=>{var l,o,i,n;let r=null==e||null==(l=e.getFlow)?void 0:l.call(e,"tableColumnSettings");if(!(null==r||null==(o=r.getStep)?void 0:o.call(r,"quickEdit")))return;let a=null==(i=e.getStepParams)?void 0:i.call(e,"tableColumnSettings","quickEdit");if(a&&Object.prototype.hasOwnProperty.call(a,"editable"))return;let s=!!(null==e||null==(n=e.collectionField)?void 0:n.readonly),d=!!(null==e?void 0:e.associationPathName);e.setProps("editable",!s&&!d&&!!t.editable)})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),gx.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openAddRecordView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup (Add new)"),hideInSettings(e){var t,l,o;return!1===(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowAddNew"))?void 0:t.allowAddNew)},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;let u={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},c=e.inputArgs.mode||t.mode||"drawer",p=e.inputArgs.size||t.size||"medium",h=(null==e?void 0:e.item)??{value:("function"==typeof(null==e?void 0:e.getFormValues)?e.getFormValues():e.formValues)??e.record},f=null==e||null==(l=e.getPropertyOptions)?void 0:l.call(e,"item"),g=Array.isArray(null==(i=e.model)||null==(o=i.props)?void 0:o.value)?e.model.props.value.length:0,v=g+1,y=null==(n=e.collectionField)?void 0:n.resourceName,b=(null==h?void 0:h.value)?null==(s=e.collectionField)||null==(a=s.collection)||null==(r=a.getFilterByTK)?void 0:r.call(a,h.value):void 0,x=uL(e,e.inputArgs);e.viewer.open({type:c,width:u[c][p],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(d=e.collectionField)?void 0:d.target,...y&&null!=b?{associationName:y,sourceId:b}:{},collectionField:e.collectionField,parentItem:h,parentItemMeta:null==f?void 0:f.meta,parentItemResolver:null==f?void 0:f.resolveOnServer,itemIndex:g,itemLength:v,openerUids:x},content:()=>(0,m.jsx)(gp,{model:e.model,scene:"create"}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===c?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gx.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openSelectRecordView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},i=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",n=e.inputArgs.size||t.size||"medium";e.model.selectedRows.value=e.model.props.value||[];let r=e.inputArgs.currentItemValue??e.model.props.value??[];e.viewer.open({type:i,width:o[i][n],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:r}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.props.value,renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=e.model.props.value||[],i=e.collection.filterTargetKey,n=[...o,...l.map(e=>({...e,__is_stored__:!0}))],r=new Map,a=[];for(let e of n){let t=gf(e,i);if(null==t){a.push(e);continue}r.has(t)||(r.set(t,e),a.push(e))}e.model.selectedRows.value=a}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===i?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gx.registerFlow({key:"AdvancedSubTableUpdateRowSettings",on:"updateRow",steps:{updateRow:{async handler(e,t){var l;let o,i=e.inputArgs.updatedRecord,n=(null==(l=e.model.props)?void 0:l.value)||[],r=e.collection.filterTargetKey,a=i[r],s=-1;i.__is_new__?s=n.findIndex(e=>e.__index__===i.__index__):a&&(s=n.findIndex(e=>e[r]===a)),-1===s?o=[...n,{...i,__is_new__:!0,__index__:(0,nn.uid)()}]:(o=[...n])[s]={...n[s],...i},e.model.props.onChange(o);let d=Math.ceil(o.length/e.model.currentPageSize);e.model.setCurrentPage(d)}}}}),gx.registerFlow({key:"AdvancedSubTableRemoveRowSettings",on:"removeRow",steps:{removeRow:{async handler(e,t){var l;let o=e.inputArgs.removeRecord,i=e.collection.filterTargetKey,n=(null==(l=e.model.props)?void 0:l.value)||[],r="object"==typeof o?o[i]:o,a=-1;if(-1===(a=o.__is_new__?n.findIndex(e=>e.__index__===o.__index__):n.findIndex(e=>e[i]===r)))return n;let s=n.slice();s.splice(a,1),e.model.props.onChange(s)}}}}),gx.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,nn.uid)()})}}}}),gx.define({label:(0,f.tExpr)("Subtable (Popup editing)"),createModelOptions:{use:"PopupSubTableFieldModel",subModels:{subTableColumns:[{use:"PopupSubTableActionsColumnModel",subModels:{actions:[{use:"PopupSubTableEditActionModel"},{use:"PopupSubTableRemoveActionModel"}]}}]}}}),f.EditableItemModel.bindModelToInterface("PopupSubTableFieldModel",["m2m","o2m","mbm"],{order:300,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class gM extends gm{async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("click",{event:e,...this.getInputArgs()},{debounce:!0})})}constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("Remove")}}}gM.define({label:(0,f.tExpr)("Remove")}),gM.registerFlow({key:"subTableRemoveActionSettings",steps:{disableProps:{async handler(e,t){var l,o,i;if(!e.model.context.associationModel)return;let n=null==(o=(i=e.model.context.associationModel).getStepParams)||null==(l=o.call(i,"advanceSubTableAssociation","allowDisassociation"))?void 0:l.allowDisassociation,r=e.record;!1!==n||r.__is_new__||r.__is_stored__?e.model.setProps({disabled:!1}):e.model.setProps({disabled:!0})}}}}),gM.registerFlow({key:"deleteSettings",title:(0,f.tExpr)("Delete settings"),on:"click",steps:{confirm:{use:"confirm",defaultParams:{enable:!0,title:(0,f.tExpr)("Remove record"),content:(0,f.tExpr)("Are you sure you want to remove it?")}},delete:{async handler(e,t){e.model.context.associationModel.dispatchEvent("removeRow",{removeRecord:e.record})}}}}),gM.registerFlow({key:"enableRemoveChange",on:"enableRemoveChange",steps:{pageRefresh:{handler(e,t){console.log(e,999999)}}}});class g_ extends aW{}g_.registerActionModels({PopupSubTableEditActionModel:gh,PopupSubTableRemoveActionModel:gM});let gS=(0,_formily_reactive_react__rspack_import_74.observer)(e=>{let{record:t,model:l,index:o,_subTableModel:i}=e;return(0,m.jsx)(f.DndProvider,{children:(0,m.jsx)(x.Space,{wrap:!0,size:"middle",className:(0,A.css)`
1198
+ `,components:{header:{wrapper:gg},body:{cell:gv}},footer:()=>(0,m.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,m.jsxs)(x.Space,{size:"middle",children:[p&&(M||T)&&(M?(0,m.jsxs)(x.Button,{type:"link",onClick:()=>g(F,k),disabled:f,children:[(0,m.jsx)(to.PlusOutlined,{}),P("Add new")]}):(0,m.jsx)(aQ._T,{message:P("No permission to add new"),forbidden:{actionName:"create"},children:(0,m.jsxs)(x.Button,{type:"link",disabled:!0,children:[(0,m.jsx)(to.PlusOutlined,{}),P("Add new")]})})),h&&(0,m.jsxs)(x.Button,{type:"link",disabled:f,onClick:()=>y(F,k),children:[(0,m.jsx)(to.ZoomInOutlined,{})," ",P("Select record")]})]})})})};class gx extends uC{get collection(){return this.context.collection}get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("resourceName",{get:()=>this.context.collectionField.target,cache:!1}),this.context.defineProperty("collection",{get:()=>this.context.collectionField.targetCollection}),this.context.defineProperty("prefixFieldPath",{get:()=>this.context.fieldPath}),this.context.defineProperty("disableFieldClickToOpen",{value:!0}),this.parent.context.actionName&&this.context.defineProperty("actionName",{get:()=>"view"})}async onDispatchEventStart(e){"beforeRender"===e&&(this.context.defineProperty("associationModel",{value:this}),this.onAddRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openAddRecordView",{setCurrentPage:e,currentPageSize:t})},this.onSelectExitRecordClick=(e,t)=>{this.setCurrentPage=e,this.currentPageSize=t,this.dispatchEvent("openSelectRecordView",{setCurrentPage:e,currentPageSize:t})})}set onSelectExitRecordClick(e){this.setProps({onSelectExitRecordClick:e})}set onAddRecordClick(e){this.setProps({onAddRecordClick:e})}async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}getBaseColumns(e){return e.mapSubModels("subTableColumns",t=>t.getColumnProps(e)).filter(e=>!(null==e?void 0:e.hidden))}change(){let e=Math.ceil(this.selectedRows.value.length/this.currentPageSize);this.setCurrentPage(e),this.props.onChange(this.selectedRows.value)}render(){var e,t,l;let o=this.context.fieldPathArray??(null==(t=this.parent)||null==(e=t.context)?void 0:e.fieldPathArray),i=()=>{var e,t;let l=[];this.setProps({value:l}),null==(t=this.context.blockModel)||null==(e=t.setFieldValue)||e.call(t,o,l)};return(0,m.jsx)(gb,{...this.props,collection:this.collection,baseColumns:this.getBaseColumns(this),model:this,formValuesChangeEmitter:null==(l=this.context.blockModel)?void 0:l.emitter,onResetFieldValue:i})}constructor(...e){super(...e),this.disableTitleField=!0,this.defaultOverflowMode="ellipsis",this.updateAssociation=!0,this.selectedRows=f.observable.ref([])}}gx.registerFlow({key:"advanceSubTableAssociation",title:(0,f.tExpr)("Association table settings"),steps:{init:{async handler(e){await e.model.applySubModelsBeforeRenderFlows("subTableColumns")}},quickEdit:{title:(0,f.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},defaultParams:{editable:!1},handler(e,t){e.model.setProps("editable",t.editable)},async afterParamsSave(e,t,l){(null==t?void 0:t.editable)===(null==l?void 0:l.editable)||e.model.mapSubModels("subTableColumns",e=>{var l,o,i,n;let r=null==e||null==(l=e.getFlow)?void 0:l.call(e,"tableColumnSettings");if(!(null==r||null==(o=r.getStep)?void 0:o.call(r,"quickEdit")))return;let a=null==(i=e.getStepParams)?void 0:i.call(e,"tableColumnSettings","quickEdit");if(a&&Object.prototype.hasOwnProperty.call(a,"editable"))return;let s=!!(null==e||null==(n=e.collectionField)?void 0:n.readonly),d=!!(null==e?void 0:e.associationPathName);e.setProps("editable",!s&&!d&&!!t.editable)})}},pageSize:{title:(0,f.tExpr)("Page size"),uiMode:{type:"select",key:"pageSize",props:{options:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:10},handler(e,t){e.model.setProps({pageSize:t.pageSize})}},allowAddNew:{title:(0,f.tExpr)("Enable add new action"),uiMode:{type:"switch",key:"allowAddNew"},defaultParams:{allowAddNew:!0},handler(e,t){e.model.setProps({allowAddNew:t.allowAddNew})}},allowDisassociation:{title:(0,f.tExpr)("Enable remove action"),uiMode:{type:"switch",key:"allowDisassociation"},defaultParams:{allowDisassociation:!0},handler(e,t){e.model.setProps({allowDisassociation:t.allowDisassociation})}},allowSelectExistingRecord:{title:(0,f.tExpr)("Enable select action"),uiMode:{type:"switch",key:"allowSelectExistingRecord"},defaultParams:{allowSelectExistingRecord:!0},handler(e,t){e.model.setProps({allowSelectExistingRecord:t.allowSelectExistingRecord})}}}}),gx.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Edit setting"),on:{eventName:"openAddRecordView"},sort:300,steps:{openView:{title:(0,f.tExpr)("Edit popup (Add new)"),hideInSettings(e){var t,l,o;return!1===(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowAddNew"))?void 0:t.allowAddNew)},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;let u={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},c=e.inputArgs.mode||t.mode||"drawer",p=e.inputArgs.size||t.size||"medium",h=(null==e?void 0:e.item)??{value:("function"==typeof(null==e?void 0:e.getFormValues)?e.getFormValues():e.formValues)??e.record},f=null==e||null==(l=e.getPropertyOptions)?void 0:l.call(e,"item"),g=Array.isArray(null==(i=e.model)||null==(o=i.props)?void 0:o.value)?e.model.props.value.length:0,v=g+1,y=null==(n=e.collectionField)?void 0:n.resourceName,b=(null==h?void 0:h.value)?null==(s=e.collectionField)||null==(a=s.collection)||null==(r=a.getFilterByTK)?void 0:r.call(a,h.value):void 0,x=uL(e,e.inputArgs);e.viewer.open({type:c,width:u[c][p],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"subForm",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(d=e.collectionField)?void 0:d.target,...y&&null!=b?{associationName:y,sourceId:b}:{},collectionField:e.collectionField,parentItem:h,parentItemMeta:null==f?void 0:f.meta,parentItemResolver:null==f?void 0:f.resolveOnServer,itemIndex:g,itemLength:v,openerUids:x},content:()=>(0,m.jsx)(gp,{model:e.model,scene:"create"}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===c?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gx.registerFlow({key:"selectExitRecordSettings",title:(0,f.tExpr)("Selector setting"),sort:400,on:{eventName:"openSelectRecordView"},steps:{openView:{title:(0,f.tExpr)("Edit popup (Select record)"),hideInSettings(e){var t,l,o;return!(null==(l=(o=e.model).getStepParams)||null==(t=l.call(o,"advanceSubTableAssociation","allowSelectExistingRecord"))?void 0:t.allowSelectExistingRecord)},uiSchema:e=>({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;let o={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},i=e.isMobileLayout?"embed":e.inputArgs.mode||t.mode||"drawer",n=e.inputArgs.size||t.size||"medium";e.model.selectedRows.value=e.model.props.value||[];let r=e.inputArgs.currentItemValue??e.model.props.value??[];e.viewer.open({type:i,width:o[i][n],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(l=e.collectionField)?void 0:l.target,collectionField:e.collectionField,...h4(e,{currentItemValue:r}),rowSelectionProps:{type:"checkbox",defaultSelectedRows:()=>e.model.props.value,renderCell:void 0,selectedRowKeys:void 0,onChange:(t,l)=>{let o=e.model.props.value||[],i=e.collection.filterTargetKey,n=[...o,...l.map(e=>({...e,__is_stored__:!0}))],r=new Map,a=[];for(let e of n){let t=gf(e,i);if(null==t){a.push(e);continue}r.has(t)||(r.set(t,e),a.push(e))}e.model.selectedRows.value=a}}},content:()=>(0,m.jsx)(h6,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===i?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),gx.registerFlow({key:"AdvancedSubTableUpdateRowSettings",on:"updateRow",steps:{updateRow:{async handler(e,t){var l;let o,i=e.inputArgs.updatedRecord,n=(null==(l=e.model.props)?void 0:l.value)||[],r=e.collection.filterTargetKey,a=i[r],s=-1;i.__is_new__?s=n.findIndex(e=>e.__index__===i.__index__):a&&(s=n.findIndex(e=>e[r]===a)),-1===s?o=[...n,{...i,__is_new__:!0,__index__:(0,nn.uid)()}]:(o=[...n])[s]={...n[s],...i},e.model.props.onChange(o);let d=Math.ceil(o.length/e.model.currentPageSize);e.model.setCurrentPage(d)}}}}),gx.registerFlow({key:"AdvancedSubTableRemoveRowSettings",on:"removeRow",steps:{removeRow:{async handler(e,t){var l;let o=e.inputArgs.removeRecord,i=e.collection.filterTargetKey,n=(null==(l=e.model.props)?void 0:l.value)||[],r="object"==typeof o?o[i]:o,a=-1;if(-1===(a=o.__is_new__?n.findIndex(e=>e.__index__===o.__index__):n.findIndex(e=>e[i]===r)))return n;let s=n.slice();s.splice(a,1),e.model.props.onChange(s)}}}}),gx.registerFlow({key:"paginationChange",on:"paginationChange",steps:{pageRefresh:{handler(e,t){e.model.setProps({resetPage:(0,nn.uid)()})}}}}),gx.define({label:(0,f.tExpr)("Subtable (Popup editing)"),createModelOptions:{use:"PopupSubTableFieldModel",subModels:{subTableColumns:[{use:"PopupSubTableActionsColumnModel",subModels:{actions:[{use:"PopupSubTableEditActionModel"},{use:"PopupSubTableRemoveActionModel"}]}}]}}}),f.EditableItemModel.bindModelToInterface("PopupSubTableFieldModel",["m2m","o2m","mbm"],{order:300,when:(e,t)=>!ft(e)&&(!t.targetCollection||"file"!==t.targetCollection.template)});class gM extends gm{async onDispatchEventStart(e){"beforeRender"===e&&(this.onClick=e=>{this.dispatchEvent("click",{event:e,...this.getInputArgs()},{debounce:!0})})}constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("Remove")}}}gM.define({label:(0,f.tExpr)("Remove")}),gM.registerFlow({key:"subTableRemoveActionSettings",steps:{disableProps:{async handler(e,t){var l,o,i;if(!e.model.context.associationModel)return;let n=null==(o=(i=e.model.context.associationModel).getStepParams)||null==(l=o.call(i,"advanceSubTableAssociation","allowDisassociation"))?void 0:l.allowDisassociation,r=e.record;!1!==n||r.__is_new__||r.__is_stored__?e.model.setProps({disabled:!1}):e.model.setProps({disabled:!0})}}}}),gM.registerFlow({key:"deleteSettings",title:(0,f.tExpr)("Delete settings"),on:"click",steps:{confirm:{use:"confirm",defaultParams:{enable:!0,title:(0,f.tExpr)("Remove record"),content:(0,f.tExpr)("Are you sure you want to remove it?")}},delete:{async handler(e,t){e.model.context.associationModel.dispatchEvent("removeRow",{removeRecord:e.record})}}}}),gM.registerFlow({key:"enableRemoveChange",on:"enableRemoveChange",steps:{pageRefresh:{handler(e,t){console.log(e,999999)}}}});class g_ extends aW{}g_.registerActionModels({PopupSubTableEditActionModel:gh,PopupSubTableRemoveActionModel:gM});let gS=(0,_formily_reactive_react__rspack_import_74.observer)(e=>{let{record:t,model:l,index:o,_subTableModel:i}=e;return(0,m.jsx)(f.DndProvider,{children:(0,m.jsx)(x.Space,{wrap:!0,size:"middle",className:(0,A.css)`
1199
1199
  > div:empty {
1200
1200
  display: none;
1201
1201
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/client-v2",
3
- "version": "2.3.0-beta.10",
3
+ "version": "2.3.0-beta.11",
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.3.0-beta.10",
31
- "@nocobase/flow-engine": "2.3.0-beta.10",
32
- "@nocobase/sdk": "2.3.0-beta.10",
33
- "@nocobase/shared": "2.3.0-beta.10",
34
- "@nocobase/utils": "2.3.0-beta.10",
30
+ "@nocobase/evaluators": "2.3.0-beta.11",
31
+ "@nocobase/flow-engine": "2.3.0-beta.11",
32
+ "@nocobase/sdk": "2.3.0-beta.11",
33
+ "@nocobase/shared": "2.3.0-beta.11",
34
+ "@nocobase/utils": "2.3.0-beta.11",
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": "7aa3dce6cf3201752882f7012c72997898015d89"
52
+ "gitHead": "e81c2c69d55f13e4d237c420a51ebad1e9dae515"
53
53
  }
@@ -0,0 +1,48 @@
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 { describe, expect, it, vi } from 'vitest';
11
+ import { validation } from '../validation';
12
+
13
+ vi.mock('../../../flow-compat', () => ({ FieldValidation: () => null }));
14
+
15
+ describe('validation action', () => {
16
+ it('rejects excess decimal places with a translated error and retains collection rules', async () => {
17
+ const setProps = vi.fn();
18
+ const collectionRule = { validator: vi.fn().mockResolvedValue(undefined) };
19
+ const t = vi.fn((key: string, options?: Record<string, unknown>) => {
20
+ return `${options?.label} 精度不能超过 ${options?.limit} 位小数`;
21
+ });
22
+ const ctx = {
23
+ model: {
24
+ props: { label: '工龄' },
25
+ collectionField: { getComponentProps: () => ({ rules: [collectionRule] }) },
26
+ setProps,
27
+ },
28
+ t,
29
+ } as unknown as Parameters<typeof validation.handler>[0];
30
+
31
+ await validation.handler(ctx, {
32
+ validation: { type: 'number', rules: [{ name: 'precision', args: { limit: 2 } }] },
33
+ });
34
+
35
+ const { rules } = setProps.mock.calls[0][0] as {
36
+ rules: { validator: (rule: unknown, value: unknown) => Promise<void> }[];
37
+ };
38
+ expect(rules).toHaveLength(2);
39
+ expect(rules[0]).toBe(collectionRule);
40
+ await expect(rules[1].validator({}, 39.2234)).rejects.toBe('工龄 精度不能超过 2 位小数');
41
+ expect(t).toHaveBeenCalledWith(
42
+ 'number.precision',
43
+ expect.objectContaining({ ns: 'data-source-main', label: '工龄', limit: 2 }),
44
+ );
45
+ await expect(rules[1].validator({}, 39.22)).resolves.toBeUndefined();
46
+ await expect(rules[1].validator({}, null)).resolves.toBeUndefined();
47
+ });
48
+ });
@@ -19,7 +19,7 @@ import {
19
19
  createCurrentRecordMetaFactory,
20
20
  useFlowModel,
21
21
  } from '@nocobase/flow-engine';
22
- import { Table, Button, Space } from 'antd';
22
+ import { Table, Button, Space, theme } from 'antd';
23
23
  import { uid } from '@formily/shared';
24
24
  import classNames from 'classnames';
25
25
  import { DragEndEvent } from '@dnd-kit/core';
@@ -190,6 +190,7 @@ const AddFieldColumn = ({ model }) => {
190
190
  };
191
191
 
192
192
  const DisplayTable = (props) => {
193
+ const { token } = theme.useToken();
193
194
  const {
194
195
  pageSize,
195
196
  value,
@@ -269,7 +270,7 @@ const DisplayTable = (props) => {
269
270
  },
270
271
  },
271
272
  ...baseColumns,
272
- { key: 'empty' },
273
+ { key: 'empty', render: () => <div style={{ minHeight: token.controlHeight }} /> },
273
274
  ].filter(Boolean),
274
275
  ) as any[];
275
276
 
@@ -283,7 +284,7 @@ const DisplayTable = (props) => {
283
284
  }
284
285
 
285
286
  return cols;
286
- }, [baseColumns, enableIndexColumn, currentPage, currentPageSize, isConfigMode, model]);
287
+ }, [baseColumns, enableIndexColumn, currentPage, currentPageSize, isConfigMode, model, token.controlHeight]);
287
288
  return (
288
289
  <Table
289
290
  tableLayout="fixed"
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { CloseOutlined, ZoomInOutlined } from '@ant-design/icons';
11
- import { Table, Form, Space, Button } from 'antd';
11
+ import { Table, Form, Space, Button, theme } from 'antd';
12
12
  import { css } from '@emotion/css';
13
13
  import { useTranslation } from 'react-i18next';
14
14
  import { PlusOutlined } from '@ant-design/icons';
@@ -51,6 +51,7 @@ function shouldRefreshForChangedPaths(fieldPath: unknown, changedPaths: unknown)
51
51
 
52
52
  export function SubTableField(props) {
53
53
  const { t } = useTranslation();
54
+ const { token } = theme.useToken();
54
55
  const {
55
56
  onChange,
56
57
  columns,
@@ -180,6 +181,9 @@ export function SubTableField(props) {
180
181
  // the current array index so Form.Item can rebind after reordering/removal.
181
182
  const rowBindingKey = `${rowIdentity}:${pageRowIdx}`;
182
183
  const columnKey = col.dataIndex ?? col.key ?? 'cell';
184
+ if (col.key === '_empty') {
185
+ return <div style={{ minHeight: token.controlHeight }} />;
186
+ }
183
187
  if (!col.render) {
184
188
  return;
185
189
  }