@nocobase/client-v2 2.2.19 → 2.2.20
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
|
@@ -847,7 +847,7 @@ if (!ctx.record) {
|
|
|
847
847
|
overflow: hidden;
|
|
848
848
|
text-overflow: ellipsis;
|
|
849
849
|
}
|
|
850
|
-
`;function uK(e){return e?{...e,display:"none"}:{display:"none"}}function uG(e){return(null==e?void 0:e.value)??"value"}function uW(e,t,l,o){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"record";if(o)return Array.isArray(e)?e.filter(e=>null!=e).map(e=>{if("value"===n)return l.get(e)??{[t]:e};let o=null==e?void 0:e[t];return l.get(o)??e}):[];if("value"===n&&("string"==typeof e||"number"==typeof e))return[l.get(e)??{[t]:e}].filter(Boolean);if(e&&"object"==typeof e){let o=e[t],n=l.get(o)??e;return n?[n]:[]}return[]}function uJ(e){let{fieldNames:t,value:l,multiple:o,allowMultiple:n,options:r,onChange:a,onDropdownVisibleChange:s,onPopupScroll:d,onSearch:u,disabled:c,dropdownStyle:p,loading:h=!1,valueMode:g="record",...v}=e,y=(0,f.useFlowModelContext)().t,_=!!(o&&n),x=uG(t),M=uH(r,l,_),w=(0,i.useMemo)(()=>{let e=new Map;for(let t of M)e.set(null==t?void 0:t[x],t);return e},[M,x]),[S,k]=(0,i.useState)(!1),[F,C]=(0,i.useState)(""),A=(0,i.useMemo)(()=>uW(l,x,w,_,g),[l,x,w,_,g]),[P,T]=(0,i.useState)(()=>A),j=(0,i.useRef)(S);(0,i.useEffect)(()=>{S&&!j.current&&T(A),j.current=S},[A,S]),(0,i.useEffect)(()=>{S||C("")},[S]);let I=(0,i.useMemo)(()=>{if(!P.length)return[];let e=[];for(let t of P){let l=null==t?void 0:t[x];null!=l&&e.push(l)}return e},[P,x]),L=(0,i.useCallback)(()=>{c||(k(!0),null==s||s(!0))},[c,s]),R=(0,i.useCallback)(()=>{k(!1),null==s||s(!1)},[s]),D=(0,i.useCallback)(()=>{if("value"===g){if(_)a(P.map(e=>null==e?void 0:e[x]).filter(e=>null!=e));else{var e;a(null==P||null==(e=P[0])?void 0:e[x])}R();return}a(P),R()},[R,_,a,P,x,g]),E=(0,i.useCallback)(e=>{if(_)return void T(t=>{let l=new Map;for(let e of t)l.set(null==e?void 0:e[x],e);let o=[];for(let t of e){let e=w.get(t)??l.get(t);e&&o.push(e)}return o});let t=e[0];if(void 0===t){a(void 0),R();return}let l=w.get(t);l&&("value"===g?a(null==l?void 0:l[x]):a(l)),R()},[R,_,a,w,x,g]),Y=(0,i.useCallback)(e=>{if(!d)return;let t=e.currentTarget;t.scrollTop+t.clientHeight<t.scrollHeight-20||d({target:t})},[d]),N=(0,i.useCallback)(e=>{C(e),null==u||u(e)},[u]),O=(0,i.useCallback)(e=>{c||("Enter"===e.key||" "===e.key)&&(e.preventDefault(),L())},[c,L]);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(b.Select,{...v,dropdownStyle:uK(p),fieldNames:t,options:M,value:uV(l,t,_,g,M),mode:_?"multiple":void 0,open:!1,onClick:L,onKeyDown:O,onChange:(e,t)=>{"value"===g?Array.isArray(t)?a(t.map(e=>(null==e?void 0:e[x])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):a((null==t?void 0:t[x])??(null==t?void 0:t.value)):a(t)},loading:h,optionRender:e=>{let{data:l}=e;return(0,m.jsx)(uB,{option:l,fieldNames:t})},labelRender:e=>(0,m.jsx)("div",{className:uU,children:e.label}),showSearch:!1}),(0,m.jsxs)(__rspack_external_antd_mobile_0b674875.Popup,{visible:S,onMaskClick:R,destroyOnClose:!0,children:[(0,m.jsx)("div",{style:{margin:"10px"},children:(0,m.jsx)(__rspack_external_antd_mobile_0b674875.SearchBar,{placeholder:y("search"),value:F,onChange:N,onCancel:R,cancelText:y("Cancel"),showCancelButton:!0})}),(0,m.jsxs)("div",{style:uz(_),onScroll:Y,children:[(0,m.jsx)(__rspack_external_antd_mobile_0b674875.CheckList,{multiple:_,value:I,onChange:E,children:M.map(e=>{let l=null==e?void 0:e[x];return(0,m.jsx)(__rspack_external_antd_mobile_0b674875.CheckList.Item,{value:l,children:(0,m.jsx)(uB,{option:e,fieldNames:t})},l)})}),h&&(0,m.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"12px 0"},children:(0,m.jsx)(__rspack_external_antd_mobile_0b674875.SpinLoading,{color:"primary"})})]}),_&&(0,m.jsx)("div",{style:u$,children:(0,m.jsx)(__rspack_external_antd_mobile_0b674875.Button,{block:!0,color:"primary",onClick:D,style:{marginTop:"16px"},children:y("Confirm")})})]})]})}function uX(e,t){let l=e;for(;l;){var o;let e=null==l||null==(o=l.constructor)?void 0:o.name;if(e&&t.includes(e))return!0;l=null==l?void 0:l.parent}return!1}function uQ(e){let t=null==e?void 0:e.parent;if((null==t?void 0:t.use)==="QuickEditFormModel")return t.viewContainer}function uZ(e,t){let l=uQ(e);if(null==l?void 0:l.update){if(t)return void l.update({preventClose:!0});setTimeout(()=>{var e;null==(e=l.update)||e.call(l,{preventClose:!1})},0)}}function u0(e){let{options:t}=e,l=(0,f.useFlowViewContext)(),{data:o,loading:n}=(0,nB.useRequest)(async()=>await l.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:l,skipSave:!l.flowSettingsEnabled}),{refreshDeps:[l,t]});return!n&&(null==o?void 0:o.uid)?(0,m.jsx)(f.FlowModelRenderer,{model:o,fallback:(0,m.jsx)(nV,{style:{margin:16}})}):(0,m.jsx)(nV,{style:{margin:16}})}function u1(e){let{model:t,toOne:l=!1}=e,o=(0,f.useFlowContext)(),{Header:n,type:i}=o.view;return t._closeView=o.view.close,(0,m.jsxs)("div",{children:[(0,m.jsx)(n,{title:"dialog"===i?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:o.t("Create record")}):o.t("Create record")}),(0,m.jsx)(u0,{options:{parentId:o.view.inputArgs.parentId,subKey:"grid",async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel"}})]})}let u2=(e,t)=>{var l,o;let n=null==(l=e.context.collectionField)?void 0:l.collection,r=null==n?void 0:n.dataSource,a=e.context.t,s=(null==(o=e.context.collectionField)?void 0:o.name)||e.fieldPath,d=(0,i.useMemo)(()=>{let e=a((null==r?void 0:r.displayName)||(null==r?void 0:r.key)||""),t=e?`${e} > `:"",l=n?`${a(n.title)||n.name||n.tableName} > `:"";return`${t}${l}${s}`},[n,null==r?void 0:r.displayName,null==r?void 0:r.key,s,a]);return t?null:a('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:"Update"}).replaceAll(">",">")},u5=(0,A.css)`
|
|
850
|
+
`;function uK(e){return e?{...e,display:"none"}:{display:"none"}}function uG(e){return(null==e?void 0:e.value)??"value"}function uW(e,t,l,o){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"record";if(o)return Array.isArray(e)?e.filter(e=>null!=e).map(e=>{if("value"===n)return l.get(e)??{[t]:e};let o=null==e?void 0:e[t];return l.get(o)??e}):[];if("value"===n&&("string"==typeof e||"number"==typeof e))return[l.get(e)??{[t]:e}].filter(Boolean);if(e&&"object"==typeof e){let o=e[t],n=l.get(o)??e;return n?[n]:[]}return[]}function uJ(e){let{fieldNames:t,value:l,multiple:o,allowMultiple:n,options:r,onChange:a,onDropdownVisibleChange:s,onPopupScroll:d,onSearch:u,disabled:c,dropdownStyle:p,loading:h=!1,valueMode:g="record",...v}=e,y=(0,f.useFlowModelContext)().t,_=!!(o&&n),x=uG(t),M=uH(r,l,_),w=(0,i.useMemo)(()=>{let e=new Map;for(let t of M)e.set(null==t?void 0:t[x],t);return e},[M,x]),[S,k]=(0,i.useState)(!1),[F,C]=(0,i.useState)(""),A=(0,i.useMemo)(()=>uW(l,x,w,_,g),[l,x,w,_,g]),[P,T]=(0,i.useState)(()=>A),j=(0,i.useRef)(S);(0,i.useEffect)(()=>{S&&!j.current&&T(A),j.current=S},[A,S]),(0,i.useEffect)(()=>{S||C("")},[S]);let I=(0,i.useMemo)(()=>{if(!P.length)return[];let e=[];for(let t of P){let l=null==t?void 0:t[x];null!=l&&e.push(l)}return e},[P,x]),L=(0,i.useCallback)(()=>{c||(k(!0),null==s||s(!0))},[c,s]),R=(0,i.useCallback)(()=>{k(!1),null==s||s(!1)},[s]),D=(0,i.useCallback)(()=>{if("value"===g){if(_)a(P.map(e=>null==e?void 0:e[x]).filter(e=>null!=e));else{var e;a(null==P||null==(e=P[0])?void 0:e[x])}R();return}a(P),R()},[R,_,a,P,x,g]),E=(0,i.useCallback)(e=>{if(_)return void T(t=>{let l=new Map;for(let e of t)l.set(null==e?void 0:e[x],e);let o=[];for(let t of e){let e=w.get(t)??l.get(t);e&&o.push(e)}return o});let t=e[0];if(void 0===t){a(void 0),R();return}let l=w.get(t);l&&("value"===g?a(null==l?void 0:l[x]):a(l)),R()},[R,_,a,w,x,g]),Y=(0,i.useCallback)(e=>{if(!d)return;let t=e.currentTarget;t.scrollTop+t.clientHeight<t.scrollHeight-20||d({target:t})},[d]),N=(0,i.useCallback)(e=>{C(e),null==u||u(e)},[u]),O=(0,i.useCallback)(e=>{c||("Enter"===e.key||" "===e.key)&&(e.preventDefault(),L())},[c,L]);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(b.Select,{...v,dropdownStyle:uK(p),fieldNames:t,options:M,value:uV(l,t,_,g,M),mode:_?"multiple":void 0,open:!1,onClick:L,onKeyDown:O,onChange:(e,t)=>{"value"===g?Array.isArray(t)?a(t.map(e=>(null==e?void 0:e[x])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):a((null==t?void 0:t[x])??(null==t?void 0:t.value)):a(t)},loading:h,optionRender:e=>{let{data:l}=e;return(0,m.jsx)(uB,{option:l,fieldNames:t})},labelRender:e=>(0,m.jsx)("div",{className:uU,children:e.label}),showSearch:!1}),(0,m.jsxs)(__rspack_external_antd_mobile_0b674875.Popup,{visible:S,onMaskClick:R,destroyOnClose:!0,children:[(0,m.jsx)("div",{style:{margin:"10px"},children:(0,m.jsx)(__rspack_external_antd_mobile_0b674875.SearchBar,{placeholder:y("search"),value:F,onChange:N,onCancel:R,cancelText:y("Cancel"),showCancelButton:!0})}),(0,m.jsxs)("div",{style:uz(_),onScroll:Y,children:[(0,m.jsx)(__rspack_external_antd_mobile_0b674875.CheckList,{multiple:_,value:I,onChange:E,children:M.map(e=>{let l=null==e?void 0:e[x];return(0,m.jsx)(__rspack_external_antd_mobile_0b674875.CheckList.Item,{value:l,children:(0,m.jsx)(uB,{option:e,fieldNames:t})},l)})}),h&&(0,m.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"12px 0"},children:(0,m.jsx)(__rspack_external_antd_mobile_0b674875.SpinLoading,{color:"primary"})})]}),_&&(0,m.jsx)("div",{style:u$,children:(0,m.jsx)(__rspack_external_antd_mobile_0b674875.Button,{block:!0,color:"primary",onClick:D,style:{marginTop:"16px"},children:y("Confirm")})})]})]})}function uX(e,t){let l=e;for(;l;){var o;let e=null==l||null==(o=l.constructor)?void 0:o.name;if(e&&t.includes(e))return!0;l=null==l?void 0:l.parent}return!1}function uQ(e){let t=null==e?void 0:e.parent;if((null==t?void 0:t.use)==="QuickEditFormModel")return t.viewContainer}function uZ(e,t){let l=uQ(e);if(null==l?void 0:l.update){if(t)return void l.update({preventClose:!0});setTimeout(()=>{var e;null==(e=l.update)||e.call(l,{preventClose:!1})},0)}}function u0(e){let{options:t}=e,l=(0,f.useFlowViewContext)(),{data:o,loading:n}=(0,nB.useRequest)(async()=>await l.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:l,skipSave:!l.flowSettingsEnabled}),{refreshDeps:[l,t]});return!n&&(null==o?void 0:o.uid)?(0,m.jsx)(f.FlowModelRenderer,{model:o,fallback:(0,m.jsx)(nV,{style:{margin:16}})}):(0,m.jsx)(nV,{style:{margin:16}})}function u1(e){let{model:t,toOne:l=!1}=e,o=(0,f.useFlowContext)();o.defineProperty("flowSettingsEnabled",{get:()=>t.context.flowSettingsEnabled,cache:!1});let{Header:n,type:i}=o.view;return t._closeView=o.view.close,(0,m.jsxs)("div",{children:[(0,m.jsx)(n,{title:"dialog"===i?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:o.t("Create record")}):o.t("Create record")}),(0,m.jsx)(u0,{options:{parentId:o.view.inputArgs.parentId,subKey:"grid",async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel"}})]})}let u2=(e,t)=>{var l,o;let n=null==(l=e.context.collectionField)?void 0:l.collection,r=null==n?void 0:n.dataSource,a=e.context.t,s=(null==(o=e.context.collectionField)?void 0:o.name)||e.fieldPath,d=(0,i.useMemo)(()=>{let e=a((null==r?void 0:r.displayName)||(null==r?void 0:r.key)||""),t=e?`${e} > `:"",l=n?`${a(n.title)||n.name||n.tableName} > `:"";return`${t}${l}${s}`},[n,null==r?void 0:r.displayName,null==r?void 0:r.key,s,a]);return t?null:a('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:"Update"}).replaceAll(">",">")},u5=(0,A.css)`
|
|
851
851
|
min-width: 0;
|
|
852
852
|
|
|
853
853
|
.ant-select-selector {
|
|
@@ -885,7 +885,7 @@ if (!ctx.record) {
|
|
|
885
885
|
text-overflow: ellipsis;
|
|
886
886
|
white-space: nowrap !important;
|
|
887
887
|
}
|
|
888
|
-
`,u4=e=>{var t,l;let{fieldNames:o,value:n,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,_=(0,f.useFlowModel)(),x=uj(o,null==_||null==(l=_.context)||null==(t=l.collectionField)?void 0:t.targetCollection),M=!!(r&&a),w=!!(s&&M),S=uH(d,n,M),k=(0,i.useRef)();k.current||(k.current=_.__keepOpenOnSelectRuntime||(_.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let F=k.current,[C,A]=(0,i.useState)(F.open),P=e=>{Object.assign(F,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(F.open)},T=!!_.context.flowSettingsEnabled,{t:j}=(0,v.useTranslation)();uN({model:_,value:n,isMultiple:M,fieldNames:x,onChange:c});let I=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:j("Add")+` “${t}” `})]})},L=u2(_,h);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...y,className:[u5,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:x,options:S,value:uV(n,x,M),mode:M?"multiple":void 0,open:w?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;w&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(w){if(!e&&F.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}uZ(_,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{w&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uB,{option:t,fieldNames:x})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u8,children:e.label}),dropdownRender:e=>{let t=S.some(e=>e[x.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===S.length&&y.searchText)&&e,S.length>0&&y.searchText&&!t&&(0,m.jsx)(b.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(I,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,children:j("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:_.collectionField.targetCollection,message:L,children:(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:j("Add new")})}))]})};class u3 extends uC{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uj(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uJ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u4,{...this.props})}}let u6={page:1,pageSize:40,loading:!1,hasMore:!0},u9=e=>`__search__${e}`,u7=e=>`__assoc__${e}`;async function ce(e,t){try{var l,o,n,i;let t=e.model.collectionField.targetCollection,r=uj(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d=(null==s||null==(n=s.filterable)||null==(o=n.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(i=e.inputArgs.searchText)?void 0:i.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(u9(r)):(c.setPage(1),c.addFilterGroup(u9(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u3.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=u9(uj(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u6.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u3.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uj(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,n=e.model.resource,i=e.model.getDataSource();n.setPage(1),await e.model.applyFlow("selectSettings"),await n.refresh();let{count:r}=n.getMeta(),a=n.getData();(!i||r!==i.length||a[0][o]!==i[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++))}}}}),u3.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:n,clientHeight:i}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+i<n-20)&&!u6.loading&&u6.hasMore){u6.loading=!0;try{let t=e.model.resource;t.setPage(u6.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u6.pageSize?(u6.hasMore=!1,u6.page=1):u6.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u6.loading=!1}}}}}});let ct=(0,g.debounce)(ce,500);u3.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:ct}}}),u3.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let n=e.createResource(f.MultiRecordResource),i=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=i;n.setDataSourceKey(a),n.setResourceName(r),n.setPageSize(u6.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(i.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==i?void 0:i.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&n.addFilterGroup(u7(s),{$or:m}),e.model.resource=n}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u3.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uX(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u3.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,n;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:i,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(i(["m2m","o2m"].includes(null==(n=e.collectionField)?void 0:n.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u3.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,n,i,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(n=p.getFilterByTK)?void 0:n.call(p,h):void 0,g=null==(i=e.collectionField)?void 0:i.resourceName,v=uI(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u1,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u3.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class cl extends u3{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}cl.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,n="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:n,multiple:n})}}}}),cl.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var co=__webpack_require__(6832);class cn extends uF{render(){return(0,m.jsx)(co.DateFilterDynamicComponent,{...this.props})}}let ci=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:n,...i}=e,r={...i,value:t,format:l,picker:o,showTime:n};return(0,m.jsx)(co.DateFilterDynamicComponent,{...r})};class cr extends cn{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(ci,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let ca=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:n="date",...i}=e,r=o&&"date"===n?"YYYY-MM-DD":l;return(0,m.jsx)(co.DateFilterDynamicComponent,{...i,value:t,format:r,picker:n,showTime:o})};class cs extends cn{render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:n,...i}=e,r=n&&"date"===o?"YYYY-MM-DD":l,a={...i,value:t,format:r,picker:o,showTime:n};return(0,m.jsx)(co.DateFilterDynamicComponent,{...a})};class cu extends cn{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cc="recordSelectDataSourceKey",cp="recordSelectTargetCollection",cm="recordSelectTitleField",ch="recordSelectValueField",cf="allowMultiple",cg="multiple",cv="valueMode",cy=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),c_=e=>{var t,l,o,n,r;let{fieldModel:a,source:s=[]}=e,d=(0,lj.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),_=(0,et.Sx)(y),x=(0,i.useCallback)(e=>(0,et.w6)(e,y),[y]),M=()=>d.value||{},w=(e,t)=>{d.setValue({...M(),[e]:t})},S=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},k=e=>{var t,l,o,n;let i=`${d.path.toString()}.${e}`,r=null==(n=d.form)||null==(o=n.query)||null==(l=o.call(n,i))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},F=e=>{let t=k(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,i.useEffect)(()=>{var e,t,l,o,n,i,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cc])||(null==(n=m[0])?void 0:n.key)||"main",y=(u?a.slice(1):a).join("."),_=h.dataSourceManager.getCollectionField(`${v}.${y}`),b=f.FilterableItemModel.getDefaultBindingByField(g.model.context,_);if(!_&&"FilterFormCustomRecordSelectFieldModel"!==p||!b&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let x=(null==_||null==(i=_.getComponentProps)?void 0:i.call(_))||{},w={...(b&&"function"==typeof b.defaultProps?b.defaultProps(g.model.context,d):null==b?void 0:b.defaultProps)||{},...x,...M()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==_?void 0:_.target))&&(null==_?void 0:_.target)){let e=_.targetCollection||h.dataSourceManager.getCollection(_.dataSourceKey,_.target);w[cc]=_.dataSourceKey||v,w[cp]=_.target,w[cm]=_.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||w[cm],w[ch]=w[ch]||(null==e?void 0:e.filterTargetKey)||"id",void 0===w[cf]&&void 0===w[cg]&&(w[cf]=!0,w[cg]=!0),w[cv]||(w[cv]="value")}S(w)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,i.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,i.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cc])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(n=h.dataSourceManager)||null==(o=n.getDataSource)?void 0:o.call(n,P):void 0,j=null==c?void 0:c[cp],I=j?null==T||null==(r=T.getCollection)?void 0:r.call(T,j):void 0,L=(0,i.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),R=(0,i.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:L(e.title)||e.name,value:e.name})):[],[T,L]),D=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{if(!_)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(x(null==t?void 0:t.interface))};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]),E=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(_){let e=x(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cy.has(o)};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]);if((0,i.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!j||(null==c?void 0:c[cm]))return;let t=null==I||null==(e=I.titleCollectionField)?void 0:e.name;t&&d.setValue({...M(),[cm]:t})},[a,p,j,I,c]),(0,i.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!j)return;let e=null==c?void 0:c[ch],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==I?void 0:I.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({...M(),[ch]:o})},[a,p,j,I,c,E]),(0,i.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cf])===void 0&&(null==c?void 0:c[cg])===void 0&&d.setValue({...M(),[cf]:!0,[cg]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Date format"),children:(0,m.jsxs)(b.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>w("format",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(b.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(b.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(il.FormItem,{label:u("Time"),children:(0,m.jsx)(b.Checkbox,{checked:c.showTime,onChange:e=>w("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(il.FormItem,{label:u("Date range"),children:(0,m.jsx)(b.Checkbox,{checked:c.isRange,onChange:e=>w("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Mode"),children:(0,m.jsxs)(b.Radio.Group,{value:c.mode||"",onChange:e=>w("mode",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(b.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(il.FormItem,{label:u("Data source"),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cc]:e,[cp]:void 0,[cm]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Target collection"),asterisk:!0,...F(cp),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:j,options:R,onChange:e=>{d.setValue({...c,[cp]:e,[cm]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Title field"),asterisk:!0,...F(cm),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cm],options:D,onChange:e=>w(cm,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(il.FormItem,{label:u("Value field"),asterisk:!0,...F(ch),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[ch],options:E,onChange:e=>w(ch,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(il.FormItem,{label:u("Multiple"),children:(0,m.jsx)(b.Checkbox,{checked:(null==c?void 0:c[cf])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cf]:t,[cg]:t})},children:u("Allow multiple selection")})})]}):null};function cb(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),n=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,i.useRef)(),d=(0,i.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,i.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(n.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,i.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(il.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cx={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},cM=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),cw={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cS={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},ck={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function cF(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cx[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cC(e){var t,l,o,n;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(i)||0===i.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,i[0])),s=a?i[0]:r||"main",d=(a?i.slice(1):i).join(".");if(d)return null==e||null==(n=e.dataSourceManager)||null==(o=n.getCollectionField)?void 0:o.call(n,`${s}.${d}`)}function cA(e){var t,l,o,n;let i;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{i=null==(n=e.getInterfaceOptions)||null==(o=n.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){i=void 0}return Array.isArray(i)&&i.length>0?i:e.interface&&ck[e.interface]?ck[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cP(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cT(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cj(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>cM.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),n=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),i=n||t,r=n||l,a=[];return i&&a.push(cw),r&&a.push(cS),cT([...a,...o])}function cI(e){var t,l,o,n,i;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cC(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(n=p.getPrimaryKey)?void 0:n.call(p));if(m)return null==(i=p.getField)?void 0:i.call(p,m)}function cL(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,n=cI(t,l,o),i=cA(n);return{operatorList:cP(l)?cj(i):i,meta:n}}function cR(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:n=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cL(e);let i=cC(t,n);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&i){let e=cA(i);return{operatorList:a0(i)?cF(l,o):cj(e),meta:i}}let r=cF(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cA(i),meta:i}}function cD(e){let{operatorList:t,meta:l}=cR(e);return cT((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cE(e){var t,l;let{fieldModel:o,fieldModelProps:n={}}=e,i=cD(e);if("DateTimeFilterFieldModel"===o&&(null==n?void 0:n.isRange)){let e=i.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=i.find(e=>e.selected))?void 0:t.value)||(null==(l=i[0])?void 0:l.value)}function cY(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cN=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:n={},value:r,onChange:a,...s}=e,d=(0,lj.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:n,y=Array.isArray(g)?g.join("."):"",_=null==v?void 0:v.mode,b=null==v?void 0:v.allowMultiple,x=null==v?void 0:v.multiple,M=null==v?void 0:v.recordSelectDataSourceKey,w=null==v?void 0:v.recordSelectTargetCollection,S=null==v?void 0:v.recordSelectValueField,k=(0,i.useMemo)(()=>cD({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,_,b,x,M,w,S]),F=(0,i.useMemo)(()=>cY(k,e=>c.t(e)),[k,c]);return(0,i.useEffect)(()=>{if(!F.length){void 0!==r&&(null==a||a(void 0));return}if(F.some(e=>e.value===r))return;let e=cE({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,F,y,r,_,b,x,M,w,S]),(0,m.jsx)(il.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:F,value:r,onChange:a,disabled:0===F.length})});class cO extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[n,i]=t,r={key:n,label:e.t(i.meta.label),sort:i.meta.sort??999,searchable:!!(null==(l=i.meta)?void 0:l.searchable),searchPlaceholder:null==(o=i.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:n},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cB(e){let t=(0,f.useFlowEngine)(),l=(0,i.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,n]=(0,i.useState)(()=>l());(0,i.useEffect)(()=>{n(l())},[l]);let r=(0,i.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let i=null==t?void 0:t.dataSourceManager;if(!i)return;let r=[];if(1===e.length){let e=o.value,t=i.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=i.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,n(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),n=null==o?void 0:o.targetCollection;r=((null==n?void 0:n.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,n(e=>[...e])},[t]);return(0,m.jsx)(b.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cO.renderMode=f.ModelRenderMode.RenderFunction,cO.define({hide:!0,label:(0,f.tExpr)("Others")});var cV=__webpack_require__(6175);let cH=(e,t,l)=>{var o,n,i;if((null==l||null==(n=l.form)||null==(o=n.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(i=l.t)?void 0:i.call(l,"The field value is required"))||"The field value is required"};class cq extends cO{buildRecordSelectCollectionField(e,t){var l,o,n,i,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(n=u.getCollection)?void 0:n.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(i=c.titleCollectionField)?void 0:i.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let n=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),i=this.getCurrentOperatorMeta(),r=(0,cV.S)(this.operator,n);return(null==i?void 0:i.noValue)&&!Array.isArray(null==i||null==(o=i.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},n=cD({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),i=this.operator||e.operator;return i&&n.find(e=>e.value===i)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cq.define({label:'{{t("Custom field")}}',sort:1}),cq.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cB,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":cb,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":c_,properties:{recordSelectTargetCollection:{type:"string","x-validator":cH},recordSelectTitleField:{type:"string","x-validator":cH},recordSelectValueField:{type:"string","x-validator":cH}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cN,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,I.uid)().slice(0,4)}`}),handler(e,t){var l,o;let n,{fieldModel:i,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===i){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},n=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||n.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=n.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:i,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===i){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}n&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:n});let p=!!cD({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cE({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let c$="__filter_form_value_options__",cz=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cU=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cK=(e,t,l,o,n,i)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],n=null==e?void 0:e[l];null!=t&&null!=n&&r.set(t,n)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let n=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return n;let a=r.get(n);return null!=a?a:cU(n,i)}if(o===l)return e;let t=r.get(e);return null!=t?t:cU(e,i)};return(n&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cz(e,i))},cG=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cW=(e,t)=>{var l,o;let n=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==n?void 0:n.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==n?void 0:n.name)||e.fieldPath,u=(0,i.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll(">",">"):null},cJ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:n,allowMultiple:i,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(n&&i),g=uH(r,o,h),y=(0,f.useFlowModel)(),_=!!y.context.flowSettingsEnabled,{t:x}=(0,v.useTranslation)(),M=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:x("Add")+` “${t}” `})]})},w=cW(y,u);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uV(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uB,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
|
|
888
|
+
`,u4=e=>{var t,l;let{fieldNames:o,value:n,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,_=(0,f.useFlowModel)(),x=uj(o,null==_||null==(l=_.context)||null==(t=l.collectionField)?void 0:t.targetCollection),M=!!(r&&a),w=!!(s&&M),S=uH(d,n,M),k=(0,i.useRef)();k.current||(k.current=_.__keepOpenOnSelectRuntime||(_.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let F=k.current,[C,A]=(0,i.useState)(F.open),P=e=>{Object.assign(F,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(F.open)},T=!!_.context.flowSettingsEnabled,{t:j}=(0,v.useTranslation)();uN({model:_,value:n,isMultiple:M,fieldNames:x,onChange:c});let I=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:j("Add")+` “${t}” `})]})},L=u2(_,h);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...y,className:[u5,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:x,options:S,value:uV(n,x,M),mode:M?"multiple":void 0,open:w?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;w&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(w){if(!e&&F.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}uZ(_,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{w&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uB,{option:t,fieldNames:x})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u8,children:e.label}),dropdownRender:e=>{let t=S.some(e=>e[x.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===S.length&&y.searchText)&&e,S.length>0&&y.searchText&&!t&&(0,m.jsx)(b.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(I,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,children:j("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:_.collectionField.targetCollection,message:L,children:(0,m.jsx)(b.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:j("Add new")})}))]})};class u3 extends uC{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uj(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uJ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u4,{...this.props})}}let u6={page:1,pageSize:40,loading:!1,hasMore:!0},u9=e=>`__search__${e}`,u7=e=>`__assoc__${e}`;async function ce(e,t){try{var l,o,n,i;let t=e.model.collectionField.targetCollection,r=uj(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d=(null==s||null==(n=s.filterable)||null==(o=n.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(i=e.inputArgs.searchText)?void 0:i.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(u9(r)):(c.setPage(1),c.addFilterGroup(u9(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u3.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=u9(uj(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u6.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u3.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uj(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,n=e.model.resource,i=e.model.getDataSource();n.setPage(1),await e.model.applyFlow("selectSettings"),await n.refresh();let{count:r}=n.getMeta(),a=n.getData();(!i||r!==i.length||a[0][o]!==i[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++))}}}}),u3.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:n,clientHeight:i}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+i<n-20)&&!u6.loading&&u6.hasMore){u6.loading=!0;try{let t=e.model.resource;t.setPage(u6.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u6.pageSize?(u6.hasMore=!1,u6.page=1):u6.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u6.loading=!1}}}}}});let ct=(0,g.debounce)(ce,500);u3.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:ct}}}),u3.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let n=e.createResource(f.MultiRecordResource),i=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=i;n.setDataSourceKey(a),n.setResourceName(r),n.setPageSize(u6.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(i.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==i?void 0:i.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&n.addFilterGroup(u7(s),{$or:m}),e.model.resource=n}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u3.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uX(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u3.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,n;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:i,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(i(["m2m","o2m"].includes(null==(n=e.collectionField)?void 0:n.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u3.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,n,i,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(n=p.getFilterByTK)?void 0:n.call(p,h):void 0,g=null==(i=e.collectionField)?void 0:i.resourceName,v=uI(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},...g&&null==f?{sourceAssociationName:g}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u1,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u3.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class cl extends u3{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}cl.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,n="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:n,multiple:n})}}}}),cl.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var co=__webpack_require__(6832);class cn extends uF{render(){return(0,m.jsx)(co.DateFilterDynamicComponent,{...this.props})}}let ci=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:n,...i}=e,r={...i,value:t,format:l,picker:o,showTime:n};return(0,m.jsx)(co.DateFilterDynamicComponent,{...r})};class cr extends cn{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(ci,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let ca=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:n="date",...i}=e,r=o&&"date"===n?"YYYY-MM-DD":l;return(0,m.jsx)(co.DateFilterDynamicComponent,{...i,value:t,format:r,picker:n,showTime:o})};class cs extends cn{render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:n,...i}=e,r=n&&"date"===o?"YYYY-MM-DD":l,a={...i,value:t,format:r,picker:o,showTime:n};return(0,m.jsx)(co.DateFilterDynamicComponent,{...a})};class cu extends cn{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cc="recordSelectDataSourceKey",cp="recordSelectTargetCollection",cm="recordSelectTitleField",ch="recordSelectValueField",cf="allowMultiple",cg="multiple",cv="valueMode",cy=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),c_=e=>{var t,l,o,n,r;let{fieldModel:a,source:s=[]}=e,d=(0,lj.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),_=(0,et.Sx)(y),x=(0,i.useCallback)(e=>(0,et.w6)(e,y),[y]),M=()=>d.value||{},w=(e,t)=>{d.setValue({...M(),[e]:t})},S=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},k=e=>{var t,l,o,n;let i=`${d.path.toString()}.${e}`,r=null==(n=d.form)||null==(o=n.query)||null==(l=o.call(n,i))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},F=e=>{let t=k(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,i.useEffect)(()=>{var e,t,l,o,n,i,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cc])||(null==(n=m[0])?void 0:n.key)||"main",y=(u?a.slice(1):a).join("."),_=h.dataSourceManager.getCollectionField(`${v}.${y}`),b=f.FilterableItemModel.getDefaultBindingByField(g.model.context,_);if(!_&&"FilterFormCustomRecordSelectFieldModel"!==p||!b&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let x=(null==_||null==(i=_.getComponentProps)?void 0:i.call(_))||{},w={...(b&&"function"==typeof b.defaultProps?b.defaultProps(g.model.context,d):null==b?void 0:b.defaultProps)||{},...x,...M()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==_?void 0:_.target))&&(null==_?void 0:_.target)){let e=_.targetCollection||h.dataSourceManager.getCollection(_.dataSourceKey,_.target);w[cc]=_.dataSourceKey||v,w[cp]=_.target,w[cm]=_.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||w[cm],w[ch]=w[ch]||(null==e?void 0:e.filterTargetKey)||"id",void 0===w[cf]&&void 0===w[cg]&&(w[cf]=!0,w[cg]=!0),w[cv]||(w[cv]="value")}S(w)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,i.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,i.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cc])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(n=h.dataSourceManager)||null==(o=n.getDataSource)?void 0:o.call(n,P):void 0,j=null==c?void 0:c[cp],I=j?null==T||null==(r=T.getCollection)?void 0:r.call(T,j):void 0,L=(0,i.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),R=(0,i.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:L(e.title)||e.name,value:e.name})):[],[T,L]),D=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{if(!_)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(x(null==t?void 0:t.interface))};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]),E=(0,i.useMemo)(()=>{if(!(null==I?void 0:I.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(_){let e=x(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cy.has(o)};return(I.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:L(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||L(e.title)||e.name,value:e.name}})},[I,x,_,L]);if((0,i.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!j||(null==c?void 0:c[cm]))return;let t=null==I||null==(e=I.titleCollectionField)?void 0:e.name;t&&d.setValue({...M(),[cm]:t})},[a,p,j,I,c]),(0,i.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!j)return;let e=null==c?void 0:c[ch],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==I?void 0:I.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({...M(),[ch]:o})},[a,p,j,I,c,E]),(0,i.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cf])===void 0&&(null==c?void 0:c[cg])===void 0&&d.setValue({...M(),[cf]:!0,[cg]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Date format"),children:(0,m.jsxs)(b.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>w("format",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(b.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(b.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(il.FormItem,{label:u("Time"),children:(0,m.jsx)(b.Checkbox,{checked:c.showTime,onChange:e=>w("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(il.FormItem,{label:u("Date range"),children:(0,m.jsx)(b.Checkbox,{checked:c.isRange,onChange:e=>w("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(il.FormItem,{label:u("Mode"),children:(0,m.jsxs)(b.Radio.Group,{value:c.mode||"",onChange:e=>w("mode",e.target.value),children:[(0,m.jsx)(b.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(b.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(il.FormItem,{label:u("Options"),children:(0,m.jsxs)(b.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(b.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let n=[...e];n[l]={...t,label:o.target.value},w("options",n)}}),(0,m.jsx)(b.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let n=[...e];n[l]={...t,value:o.target.value},w("options",n)}}),(0,m.jsx)(b.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{w("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(b.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{w("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(il.FormItem,{label:u("Data source"),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cc]:e,[cp]:void 0,[cm]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Target collection"),asterisk:!0,...F(cp),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:j,options:R,onChange:e=>{d.setValue({...c,[cp]:e,[cm]:void 0})}})}),(0,m.jsx)(il.FormItem,{label:u("Title field"),asterisk:!0,...F(cm),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cm],options:D,onChange:e=>w(cm,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(il.FormItem,{label:u("Value field"),asterisk:!0,...F(ch),children:(0,m.jsx)(b.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[ch],options:E,onChange:e=>w(ch,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(il.FormItem,{label:u("Multiple"),children:(0,m.jsx)(b.Checkbox,{checked:(null==c?void 0:c[cf])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cf]:t,[cg]:t})},children:u("Allow multiple selection")})})]}):null};function cb(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),n=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,i.useRef)(),d=(0,i.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,i.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(n.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,i.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(il.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cx={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},cM=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),cw={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cS={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},ck={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function cF(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cx[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cC(e){var t,l,o,n;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(i)||0===i.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,i[0])),s=a?i[0]:r||"main",d=(a?i.slice(1):i).join(".");if(d)return null==e||null==(n=e.dataSourceManager)||null==(o=n.getCollectionField)?void 0:o.call(n,`${s}.${d}`)}function cA(e){var t,l,o,n;let i;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{i=null==(n=e.getInterfaceOptions)||null==(o=n.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){i=void 0}return Array.isArray(i)&&i.length>0?i:e.interface&&ck[e.interface]?ck[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cP(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cT(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cj(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>cM.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),n=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),i=n||t,r=n||l,a=[];return i&&a.push(cw),r&&a.push(cS),cT([...a,...o])}function cI(e){var t,l,o,n,i;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cC(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(n=p.getPrimaryKey)?void 0:n.call(p));if(m)return null==(i=p.getField)?void 0:i.call(p,m)}function cL(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,n=cI(t,l,o),i=cA(n);return{operatorList:cP(l)?cj(i):i,meta:n}}function cR(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:n=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cL(e);let i=cC(t,n);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&i){let e=cA(i);return{operatorList:a0(i)?cF(l,o):cj(e),meta:i}}let r=cF(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cA(i),meta:i}}function cD(e){let{operatorList:t,meta:l}=cR(e);return cT((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cE(e){var t,l;let{fieldModel:o,fieldModelProps:n={}}=e,i=cD(e);if("DateTimeFilterFieldModel"===o&&(null==n?void 0:n.isRange)){let e=i.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=i.find(e=>e.selected))?void 0:t.value)||(null==(l=i[0])?void 0:l.value)}function cY(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cN=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:n={},value:r,onChange:a,...s}=e,d=(0,lj.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:n,y=Array.isArray(g)?g.join("."):"",_=null==v?void 0:v.mode,b=null==v?void 0:v.allowMultiple,x=null==v?void 0:v.multiple,M=null==v?void 0:v.recordSelectDataSourceKey,w=null==v?void 0:v.recordSelectTargetCollection,S=null==v?void 0:v.recordSelectValueField,k=(0,i.useMemo)(()=>cD({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,_,b,x,M,w,S]),F=(0,i.useMemo)(()=>cY(k,e=>c.t(e)),[k,c]);return(0,i.useEffect)(()=>{if(!F.length){void 0!==r&&(null==a||a(void 0));return}if(F.some(e=>e.value===r))return;let e=cE({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,F,y,r,_,b,x,M,w,S]),(0,m.jsx)(il.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:F,value:r,onChange:a,disabled:0===F.length})});class cO extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[n,i]=t,r={key:n,label:e.t(i.meta.label),sort:i.meta.sort??999,searchable:!!(null==(l=i.meta)?void 0:l.searchable),searchPlaceholder:null==(o=i.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:n},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cB(e){let t=(0,f.useFlowEngine)(),l=(0,i.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,n]=(0,i.useState)(()=>l());(0,i.useEffect)(()=>{n(l())},[l]);let r=(0,i.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let i=null==t?void 0:t.dataSourceManager;if(!i)return;let r=[];if(1===e.length){let e=o.value,t=i.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=i.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,n(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),n=null==o?void 0:o.targetCollection;r=((null==n?void 0:n.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,n=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!n,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,n(e=>[...e])},[t]);return(0,m.jsx)(b.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cO.renderMode=f.ModelRenderMode.RenderFunction,cO.define({hide:!0,label:(0,f.tExpr)("Others")});var cV=__webpack_require__(6175);let cH=(e,t,l)=>{var o,n,i;if((null==l||null==(n=l.form)||null==(o=n.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(i=l.t)?void 0:i.call(l,"The field value is required"))||"The field value is required"};class cq extends cO{buildRecordSelectCollectionField(e,t){var l,o,n,i,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(n=u.getCollection)?void 0:n.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(i=c.titleCollectionField)?void 0:i.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let n=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),i=this.getCurrentOperatorMeta(),r=(0,cV.S)(this.operator,n);return(null==i?void 0:i.noValue)&&!Array.isArray(null==i||null==(o=i.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},n=cD({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),i=this.operator||e.operator;return i&&n.find(e=>e.value===i)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cq.define({label:'{{t("Custom field")}}',sort:1}),cq.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cB,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":cb,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":c_,properties:{recordSelectTargetCollection:{type:"string","x-validator":cH},recordSelectTitleField:{type:"string","x-validator":cH},recordSelectValueField:{type:"string","x-validator":cH}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cN,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,I.uid)().slice(0,4)}`}),handler(e,t){var l,o;let n,{fieldModel:i,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===i){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},n=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||n.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=n.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:i,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===i){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}n&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:n});let p=!!cD({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cE({flowEngine:e.model.flowEngine,fieldModel:i,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let c$="__filter_form_value_options__",cz=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cU=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cK=(e,t,l,o,n,i)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],n=null==e?void 0:e[l];null!=t&&null!=n&&r.set(t,n)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let n=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return n;let a=r.get(n);return null!=a?a:cU(n,i)}if(o===l)return e;let t=r.get(e);return null!=t?t:cU(e,i)};return(n&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cz(e,i))},cG=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cW=(e,t)=>{var l,o;let n=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==n?void 0:n.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==n?void 0:n.name)||e.fieldPath,u=(0,i.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll(">",">"):null},cJ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:n,allowMultiple:i,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(n&&i),g=uH(r,o,h),y=(0,f.useFlowModel)(),_=!!y.context.flowSettingsEnabled,{t:x}=(0,v.useTranslation)(),M=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:x("Add")+` “${t}” `})]})},w=cW(y,u);return(0,m.jsxs)(b.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(b.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(b.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(b.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uV(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uB,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
|
|
889
889
|
div {
|
|
890
890
|
white-space: nowrap !important;
|
|
891
891
|
overflow: hidden;
|
package/lib/index.js
CHANGED
|
@@ -847,7 +847,7 @@ if (!ctx.record) {
|
|
|
847
847
|
overflow: hidden;
|
|
848
848
|
text-overflow: ellipsis;
|
|
849
849
|
}
|
|
850
|
-
`;function uK(e){return e?{...e,display:"none"}:{display:"none"}}function uG(e){return(null==e?void 0:e.value)??"value"}function uW(e,t,l,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"record";if(o)return Array.isArray(e)?e.filter(e=>null!=e).map(e=>{if("value"===i)return l.get(e)??{[t]:e};let o=null==e?void 0:e[t];return l.get(o)??e}):[];if("value"===i&&("string"==typeof e||"number"==typeof e))return[l.get(e)??{[t]:e}].filter(Boolean);if(e&&"object"==typeof e){let o=e[t],i=l.get(o)??e;return i?[i]:[]}return[]}function uJ(e){let{fieldNames:t,value:l,multiple:o,allowMultiple:i,options:r,onChange:a,onDropdownVisibleChange:s,onPopupScroll:d,onSearch:u,disabled:c,dropdownStyle:p,loading:h=!1,valueMode:g="record",...v}=e,y=(0,f.useFlowModelContext)().t,b=!!(o&&i),M=uG(t),_=uH(r,l,b),S=(0,n.useMemo)(()=>{let e=new Map;for(let t of _)e.set(null==t?void 0:t[M],t);return e},[_,M]),[w,F]=(0,n.useState)(!1),[k,C]=(0,n.useState)(""),A=(0,n.useMemo)(()=>uW(l,M,S,b,g),[l,M,S,b,g]),[P,T]=(0,n.useState)(()=>A),I=(0,n.useRef)(w);(0,n.useEffect)(()=>{w&&!I.current&&T(A),I.current=w},[A,w]),(0,n.useEffect)(()=>{w||C("")},[w]);let L=(0,n.useMemo)(()=>{if(!P.length)return[];let e=[];for(let t of P){let l=null==t?void 0:t[M];null!=l&&e.push(l)}return e},[P,M]),R=(0,n.useCallback)(()=>{c||(F(!0),null==s||s(!0))},[c,s]),j=(0,n.useCallback)(()=>{F(!1),null==s||s(!1)},[s]),D=(0,n.useCallback)(()=>{if("value"===g){if(b)a(P.map(e=>null==e?void 0:e[M]).filter(e=>null!=e));else{var e;a(null==P||null==(e=P[0])?void 0:e[M])}j();return}a(P),j()},[j,b,a,P,M,g]),E=(0,n.useCallback)(e=>{if(b)return void T(t=>{let l=new Map;for(let e of t)l.set(null==e?void 0:e[M],e);let o=[];for(let t of e){let e=S.get(t)??l.get(t);e&&o.push(e)}return o});let t=e[0];if(void 0===t){a(void 0),j();return}let l=S.get(t);l&&("value"===g?a(null==l?void 0:l[M]):a(l)),j()},[j,b,a,S,M,g]),Y=(0,n.useCallback)(e=>{if(!d)return;let t=e.currentTarget;t.scrollTop+t.clientHeight<t.scrollHeight-20||d({target:t})},[d]),N=(0,n.useCallback)(e=>{C(e),null==u||u(e)},[u]),O=(0,n.useCallback)(e=>{c||("Enter"===e.key||" "===e.key)&&(e.preventDefault(),R())},[c,R]);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(x.Select,{...v,dropdownStyle:uK(p),fieldNames:t,options:_,value:uV(l,t,b,g,_),mode:b?"multiple":void 0,open:!1,onClick:R,onKeyDown:O,onChange:(e,t)=>{"value"===g?Array.isArray(t)?a(t.map(e=>(null==e?void 0:e[M])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):a((null==t?void 0:t[M])??(null==t?void 0:t.value)):a(t)},loading:h,optionRender:e=>{let{data:l}=e;return(0,m.jsx)(uB,{option:l,fieldNames:t})},labelRender:e=>(0,m.jsx)("div",{className:uz,children:e.label}),showSearch:!1}),(0,m.jsxs)(antd_mobile__rspack_import_73.Popup,{visible:w,onMaskClick:j,destroyOnClose:!0,children:[(0,m.jsx)("div",{style:{margin:"10px"},children:(0,m.jsx)(antd_mobile__rspack_import_73.SearchBar,{placeholder:y("search"),value:k,onChange:N,onCancel:j,cancelText:y("Cancel"),showCancelButton:!0})}),(0,m.jsxs)("div",{style:uU(b),onScroll:Y,children:[(0,m.jsx)(antd_mobile__rspack_import_73.CheckList,{multiple:b,value:L,onChange:E,children:_.map(e=>{let l=null==e?void 0:e[M];return(0,m.jsx)(antd_mobile__rspack_import_73.CheckList.Item,{value:l,children:(0,m.jsx)(uB,{option:e,fieldNames:t})},l)})}),h&&(0,m.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"12px 0"},children:(0,m.jsx)(antd_mobile__rspack_import_73.SpinLoading,{color:"primary"})})]}),b&&(0,m.jsx)("div",{style:u$,children:(0,m.jsx)(antd_mobile__rspack_import_73.Button,{block:!0,color:"primary",onClick:D,style:{marginTop:"16px"},children:y("Confirm")})})]})]})}function uX(e,t){let l=e;for(;l;){var o;let e=null==l||null==(o=l.constructor)?void 0:o.name;if(e&&t.includes(e))return!0;l=null==l?void 0:l.parent}return!1}function uQ(e){let t=null==e?void 0:e.parent;if((null==t?void 0:t.use)==="QuickEditFormModel")return t.viewContainer}function uZ(e,t){let l=uQ(e);if(null==l?void 0:l.update){if(t)return void l.update({preventClose:!0});setTimeout(()=>{var e;null==(e=l.update)||e.call(l,{preventClose:!1})},0)}}function u0(e){let{options:t}=e,l=(0,f.useFlowViewContext)(),{data:o,loading:i}=(0,iH.useRequest)(async()=>await l.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:l,skipSave:!l.flowSettingsEnabled}),{refreshDeps:[l,t]});return!i&&(null==o?void 0:o.uid)?(0,m.jsx)(f.FlowModelRenderer,{model:o,fallback:(0,m.jsx)(iq,{style:{margin:16}})}):(0,m.jsx)(iq,{style:{margin:16}})}function u1(e){let{model:t,toOne:l=!1}=e,o=(0,f.useFlowContext)(),{Header:i,type:n}=o.view;return t._closeView=o.view.close,(0,m.jsxs)("div",{children:[(0,m.jsx)(i,{title:"dialog"===n?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:o.t("Create record")}):o.t("Create record")}),(0,m.jsx)(u0,{options:{parentId:o.view.inputArgs.parentId,subKey:"grid",async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel"}})]})}let u2=(e,t)=>{var l,o;let i=null==(l=e.context.collectionField)?void 0:l.collection,r=null==i?void 0:i.dataSource,a=e.context.t,s=(null==(o=e.context.collectionField)?void 0:o.name)||e.fieldPath,d=(0,n.useMemo)(()=>{let e=a((null==r?void 0:r.displayName)||(null==r?void 0:r.key)||""),t=e?`${e} > `:"",l=i?`${a(i.title)||i.name||i.tableName} > `:"";return`${t}${l}${s}`},[i,null==r?void 0:r.displayName,null==r?void 0:r.key,s,a]);return t?null:a('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:"Update"}).replaceAll(">",">")},u5=(0,A.css)`
|
|
850
|
+
`;function uK(e){return e?{...e,display:"none"}:{display:"none"}}function uG(e){return(null==e?void 0:e.value)??"value"}function uW(e,t,l,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"record";if(o)return Array.isArray(e)?e.filter(e=>null!=e).map(e=>{if("value"===i)return l.get(e)??{[t]:e};let o=null==e?void 0:e[t];return l.get(o)??e}):[];if("value"===i&&("string"==typeof e||"number"==typeof e))return[l.get(e)??{[t]:e}].filter(Boolean);if(e&&"object"==typeof e){let o=e[t],i=l.get(o)??e;return i?[i]:[]}return[]}function uJ(e){let{fieldNames:t,value:l,multiple:o,allowMultiple:i,options:r,onChange:a,onDropdownVisibleChange:s,onPopupScroll:d,onSearch:u,disabled:c,dropdownStyle:p,loading:h=!1,valueMode:g="record",...v}=e,y=(0,f.useFlowModelContext)().t,b=!!(o&&i),M=uG(t),_=uH(r,l,b),S=(0,n.useMemo)(()=>{let e=new Map;for(let t of _)e.set(null==t?void 0:t[M],t);return e},[_,M]),[w,F]=(0,n.useState)(!1),[k,C]=(0,n.useState)(""),A=(0,n.useMemo)(()=>uW(l,M,S,b,g),[l,M,S,b,g]),[P,T]=(0,n.useState)(()=>A),I=(0,n.useRef)(w);(0,n.useEffect)(()=>{w&&!I.current&&T(A),I.current=w},[A,w]),(0,n.useEffect)(()=>{w||C("")},[w]);let L=(0,n.useMemo)(()=>{if(!P.length)return[];let e=[];for(let t of P){let l=null==t?void 0:t[M];null!=l&&e.push(l)}return e},[P,M]),R=(0,n.useCallback)(()=>{c||(F(!0),null==s||s(!0))},[c,s]),j=(0,n.useCallback)(()=>{F(!1),null==s||s(!1)},[s]),D=(0,n.useCallback)(()=>{if("value"===g){if(b)a(P.map(e=>null==e?void 0:e[M]).filter(e=>null!=e));else{var e;a(null==P||null==(e=P[0])?void 0:e[M])}j();return}a(P),j()},[j,b,a,P,M,g]),E=(0,n.useCallback)(e=>{if(b)return void T(t=>{let l=new Map;for(let e of t)l.set(null==e?void 0:e[M],e);let o=[];for(let t of e){let e=S.get(t)??l.get(t);e&&o.push(e)}return o});let t=e[0];if(void 0===t){a(void 0),j();return}let l=S.get(t);l&&("value"===g?a(null==l?void 0:l[M]):a(l)),j()},[j,b,a,S,M,g]),Y=(0,n.useCallback)(e=>{if(!d)return;let t=e.currentTarget;t.scrollTop+t.clientHeight<t.scrollHeight-20||d({target:t})},[d]),N=(0,n.useCallback)(e=>{C(e),null==u||u(e)},[u]),O=(0,n.useCallback)(e=>{c||("Enter"===e.key||" "===e.key)&&(e.preventDefault(),R())},[c,R]);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(x.Select,{...v,dropdownStyle:uK(p),fieldNames:t,options:_,value:uV(l,t,b,g,_),mode:b?"multiple":void 0,open:!1,onClick:R,onKeyDown:O,onChange:(e,t)=>{"value"===g?Array.isArray(t)?a(t.map(e=>(null==e?void 0:e[M])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):a((null==t?void 0:t[M])??(null==t?void 0:t.value)):a(t)},loading:h,optionRender:e=>{let{data:l}=e;return(0,m.jsx)(uB,{option:l,fieldNames:t})},labelRender:e=>(0,m.jsx)("div",{className:uz,children:e.label}),showSearch:!1}),(0,m.jsxs)(antd_mobile__rspack_import_73.Popup,{visible:w,onMaskClick:j,destroyOnClose:!0,children:[(0,m.jsx)("div",{style:{margin:"10px"},children:(0,m.jsx)(antd_mobile__rspack_import_73.SearchBar,{placeholder:y("search"),value:k,onChange:N,onCancel:j,cancelText:y("Cancel"),showCancelButton:!0})}),(0,m.jsxs)("div",{style:uU(b),onScroll:Y,children:[(0,m.jsx)(antd_mobile__rspack_import_73.CheckList,{multiple:b,value:L,onChange:E,children:_.map(e=>{let l=null==e?void 0:e[M];return(0,m.jsx)(antd_mobile__rspack_import_73.CheckList.Item,{value:l,children:(0,m.jsx)(uB,{option:e,fieldNames:t})},l)})}),h&&(0,m.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"12px 0"},children:(0,m.jsx)(antd_mobile__rspack_import_73.SpinLoading,{color:"primary"})})]}),b&&(0,m.jsx)("div",{style:u$,children:(0,m.jsx)(antd_mobile__rspack_import_73.Button,{block:!0,color:"primary",onClick:D,style:{marginTop:"16px"},children:y("Confirm")})})]})]})}function uX(e,t){let l=e;for(;l;){var o;let e=null==l||null==(o=l.constructor)?void 0:o.name;if(e&&t.includes(e))return!0;l=null==l?void 0:l.parent}return!1}function uQ(e){let t=null==e?void 0:e.parent;if((null==t?void 0:t.use)==="QuickEditFormModel")return t.viewContainer}function uZ(e,t){let l=uQ(e);if(null==l?void 0:l.update){if(t)return void l.update({preventClose:!0});setTimeout(()=>{var e;null==(e=l.update)||e.call(l,{preventClose:!1})},0)}}function u0(e){let{options:t}=e,l=(0,f.useFlowViewContext)(),{data:o,loading:i}=(0,iH.useRequest)(async()=>await l.engine.loadOrCreateModel(t,{delegateToParent:!1,delegate:l,skipSave:!l.flowSettingsEnabled}),{refreshDeps:[l,t]});return!i&&(null==o?void 0:o.uid)?(0,m.jsx)(f.FlowModelRenderer,{model:o,fallback:(0,m.jsx)(iq,{style:{margin:16}})}):(0,m.jsx)(iq,{style:{margin:16}})}function u1(e){let{model:t,toOne:l=!1}=e,o=(0,f.useFlowContext)();o.defineProperty("flowSettingsEnabled",{get:()=>t.context.flowSettingsEnabled,cache:!1});let{Header:i,type:n}=o.view;return t._closeView=o.view.close,(0,m.jsxs)("div",{children:[(0,m.jsx)(i,{title:"dialog"===n?(0,m.jsx)("div",{style:{padding:`${o.themeToken.paddingLG}px ${o.themeToken.paddingLG}px 0`,marginBottom:-o.themeToken.marginSM,backgroundColor:"var(--colorBgLayout)"},children:o.t("Create record")}):o.t("Create record")}),(0,m.jsx)(u0,{options:{parentId:o.view.inputArgs.parentId,subKey:"grid",async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel"}})]})}let u2=(e,t)=>{var l,o;let i=null==(l=e.context.collectionField)?void 0:l.collection,r=null==i?void 0:i.dataSource,a=e.context.t,s=(null==(o=e.context.collectionField)?void 0:o.name)||e.fieldPath,d=(0,n.useMemo)(()=>{let e=a((null==r?void 0:r.displayName)||(null==r?void 0:r.key)||""),t=e?`${e} > `:"",l=i?`${a(i.title)||i.name||i.tableName} > `:"";return`${t}${l}${s}`},[i,null==r?void 0:r.displayName,null==r?void 0:r.key,s,a]);return t?null:a('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:"Update"}).replaceAll(">",">")},u5=(0,A.css)`
|
|
851
851
|
min-width: 0;
|
|
852
852
|
|
|
853
853
|
.ant-select-selector {
|
|
@@ -885,7 +885,7 @@ if (!ctx.record) {
|
|
|
885
885
|
text-overflow: ellipsis;
|
|
886
886
|
white-space: nowrap !important;
|
|
887
887
|
}
|
|
888
|
-
`,u4=e=>{var t,l;let{fieldNames:o,value:i,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,b=(0,f.useFlowModel)(),M=uI(o,null==b||null==(l=b.context)||null==(t=l.collectionField)?void 0:t.targetCollection),_=!!(r&&a),S=!!(s&&_),w=uH(d,i,_),F=(0,n.useRef)();F.current||(F.current=b.__keepOpenOnSelectRuntime||(b.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let k=F.current,[C,A]=(0,n.useState)(k.open),P=e=>{Object.assign(k,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(k.open)},T=!!b.context.flowSettingsEnabled,{t:I}=(0,v.useTranslation)();uN({model:b,value:i,isMultiple:_,fieldNames:M,onChange:c});let L=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:I("Add")+` “${t}” `})]})},R=u2(b,h);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...y,className:[u5,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:M,options:w,value:uV(i,M,_),mode:_?"multiple":void 0,open:S?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;S&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(S){if(!e&&k.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}uZ(b,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{S&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uB,{option:t,fieldNames:M})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u8,children:e.label}),dropdownRender:e=>{let t=w.some(e=>e[M.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===w.length&&y.searchText)&&e,w.length>0&&y.searchText&&!t&&(0,m.jsx)(x.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(L,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,children:I("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:b.collectionField.targetCollection,message:R,children:(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:I("Add new")})}))]})};class u3 extends uC{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uI(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uJ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u4,{...this.props})}}let u6={page:1,pageSize:40,loading:!1,hasMore:!0},u9=e=>`__search__${e}`,u7=e=>`__assoc__${e}`;async function ce(e,t){try{var l,o,i,n;let t=e.model.collectionField.targetCollection,r=uI(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d=(null==s||null==(i=s.filterable)||null==(o=i.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(n=e.inputArgs.searchText)?void 0:n.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(u9(r)):(c.setPage(1),c.addFilterGroup(u9(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u3.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=u9(uI(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u6.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u3.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uI(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,i=e.model.resource,n=e.model.getDataSource();i.setPage(1),await e.model.applyFlow("selectSettings"),await i.refresh();let{count:r}=i.getMeta(),a=i.getData();(!n||r!==n.length||a[0][o]!==n[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++))}}}}),u3.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:i,clientHeight:n}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+n<i-20)&&!u6.loading&&u6.hasMore){u6.loading=!0;try{let t=e.model.resource;t.setPage(u6.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u6.pageSize?(u6.hasMore=!1,u6.page=1):u6.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u6.loading=!1}}}}}});let ct=(0,g.debounce)(ce,500);u3.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:ct}}}),u3.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let i=e.createResource(f.MultiRecordResource),n=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=n;i.setDataSourceKey(a),i.setResourceName(r),i.setPageSize(u6.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(n.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==n?void 0:n.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&i.addFilterGroup(u7(s),{$or:m}),e.model.resource=i}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u3.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uX(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u3.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,i;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:n,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(n(["m2m","o2m"].includes(null==(i=e.collectionField)?void 0:i.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u3.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,i,n,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(i=p.getFilterByTK)?void 0:i.call(p,h):void 0,g=null==(n=e.collectionField)?void 0:n.resourceName,v=uL(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u1,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u3.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class cl extends u3{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}cl.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,i="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:i,multiple:i})}}}}),cl.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var co=__nested_rspack_require_1264766__(6832);class ci extends uk{render(){return(0,m.jsx)(co.DateFilterDynamicComponent,{...this.props})}}let cn=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:i,...n}=e,r={...n,value:t,format:l,picker:o,showTime:i};return(0,m.jsx)(co.DateFilterDynamicComponent,{...r})};class cr extends ci{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(cn,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let ca=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:i="date",...n}=e,r=o&&"date"===i?"YYYY-MM-DD":l;return(0,m.jsx)(co.DateFilterDynamicComponent,{...n,value:t,format:r,picker:i,showTime:o})};class cs extends ci{render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:i,...n}=e,r=i&&"date"===o?"YYYY-MM-DD":l,a={...n,value:t,format:r,picker:o,showTime:i};return(0,m.jsx)(co.DateFilterDynamicComponent,{...a})};class cu extends ci{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cc="recordSelectDataSourceKey",cp="recordSelectTargetCollection",cm="recordSelectTitleField",ch="recordSelectValueField",cf="allowMultiple",cg="multiple",cv="valueMode",cy=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),cb=e=>{var t,l,o,i,r;let{fieldModel:a,source:s=[]}=e,d=(0,lI.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),b=(0,et.Sx)(y),M=(0,n.useCallback)(e=>(0,et.w6)(e,y),[y]),_=()=>d.value||{},S=(e,t)=>{d.setValue({..._(),[e]:t})},w=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},F=e=>{var t,l,o,i;let n=`${d.path.toString()}.${e}`,r=null==(i=d.form)||null==(o=i.query)||null==(l=o.call(i,n))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},k=e=>{let t=F(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,n.useEffect)(()=>{var e,t,l,o,i,n,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cc])||(null==(i=m[0])?void 0:i.key)||"main",y=(u?a.slice(1):a).join("."),b=h.dataSourceManager.getCollectionField(`${v}.${y}`),x=f.FilterableItemModel.getDefaultBindingByField(g.model.context,b);if(!b&&"FilterFormCustomRecordSelectFieldModel"!==p||!x&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let M=(null==b||null==(n=b.getComponentProps)?void 0:n.call(b))||{},S={...(x&&"function"==typeof x.defaultProps?x.defaultProps(g.model.context,d):null==x?void 0:x.defaultProps)||{},...M,..._()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==b?void 0:b.target))&&(null==b?void 0:b.target)){let e=b.targetCollection||h.dataSourceManager.getCollection(b.dataSourceKey,b.target);S[cc]=b.dataSourceKey||v,S[cp]=b.target,S[cm]=b.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||S[cm],S[ch]=S[ch]||(null==e?void 0:e.filterTargetKey)||"id",void 0===S[cf]&&void 0===S[cg]&&(S[cf]=!0,S[cg]=!0),S[cv]||(S[cv]="value")}w(S)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,n.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,n.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cc])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(i=h.dataSourceManager)||null==(o=i.getDataSource)?void 0:o.call(i,P):void 0,I=null==c?void 0:c[cp],L=I?null==T||null==(r=T.getCollection)?void 0:r.call(T,I):void 0,R=(0,n.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),j=(0,n.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:R(e.title)||e.name,value:e.name})):[],[T,R]),D=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{if(!b)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(M(null==t?void 0:t.interface))};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]),E=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(b){let e=M(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cy.has(o)};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]);if((0,n.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!I||(null==c?void 0:c[cm]))return;let t=null==L||null==(e=L.titleCollectionField)?void 0:e.name;t&&d.setValue({..._(),[cm]:t})},[a,p,I,L,c]),(0,n.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!I)return;let e=null==c?void 0:c[ch],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==L?void 0:L.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({..._(),[ch]:o})},[a,p,I,L,c,E]),(0,n.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cf])===void 0&&(null==c?void 0:c[cg])===void 0&&d.setValue({..._(),[cf]:!0,[cg]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Date format"),children:(0,m.jsxs)(x.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>S("format",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(x.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(x.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Time"),children:(0,m.jsx)(x.Checkbox,{checked:c.showTime,onChange:e=>S("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(ni.FormItem,{label:u("Date range"),children:(0,m.jsx)(x.Checkbox,{checked:c.isRange,onChange:e=>S("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Mode"),children:(0,m.jsxs)(x.Radio.Group,{value:c.mode||"",onChange:e=>S("mode",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(x.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(ni.FormItem,{label:u("Data source"),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cc]:e,[cp]:void 0,[cm]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Target collection"),asterisk:!0,...k(cp),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:I,options:j,onChange:e=>{d.setValue({...c,[cp]:e,[cm]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Title field"),asterisk:!0,...k(cm),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cm],options:D,onChange:e=>S(cm,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(ni.FormItem,{label:u("Value field"),asterisk:!0,...k(ch),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[ch],options:E,onChange:e=>S(ch,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(ni.FormItem,{label:u("Multiple"),children:(0,m.jsx)(x.Checkbox,{checked:(null==c?void 0:c[cf])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cf]:t,[cg]:t})},children:u("Allow multiple selection")})})]}):null};function cx(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),i=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,n.useRef)(),d=(0,n.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,n.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(i.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,n.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(ni.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cM={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},c_=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),cS={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cw={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cF={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function ck(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cM[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cC(e){var t,l,o,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(n)||0===n.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,n[0])),s=a?n[0]:r||"main",d=(a?n.slice(1):n).join(".");if(d)return null==e||null==(i=e.dataSourceManager)||null==(o=i.getCollectionField)?void 0:o.call(i,`${s}.${d}`)}function cA(e){var t,l,o,i;let n;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{n=null==(i=e.getInterfaceOptions)||null==(o=i.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){n=void 0}return Array.isArray(n)&&n.length>0?n:e.interface&&cF[e.interface]?cF[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cP(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cT(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cI(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>c_.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),i=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),n=i||t,r=i||l,a=[];return n&&a.push(cS),r&&a.push(cw),cT([...a,...o])}function cL(e){var t,l,o,i,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cC(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(i=p.getPrimaryKey)?void 0:i.call(p));if(m)return null==(n=p.getField)?void 0:n.call(p,m)}function cR(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,i=cL(t,l,o),n=cA(i);return{operatorList:cP(l)?cI(n):n,meta:i}}function cj(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:i=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cR(e);let n=cC(t,i);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&n){let e=cA(n);return{operatorList:a0(n)?ck(l,o):cI(e),meta:n}}let r=ck(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cA(n),meta:n}}function cD(e){let{operatorList:t,meta:l}=cj(e);return cT((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cE(e){var t,l;let{fieldModel:o,fieldModelProps:i={}}=e,n=cD(e);if("DateTimeFilterFieldModel"===o&&(null==i?void 0:i.isRange)){let e=n.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=n.find(e=>e.selected))?void 0:t.value)||(null==(l=n[0])?void 0:l.value)}function cY(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cN=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:i={},value:r,onChange:a,...s}=e,d=(0,lI.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:i,y=Array.isArray(g)?g.join("."):"",b=null==v?void 0:v.mode,x=null==v?void 0:v.allowMultiple,M=null==v?void 0:v.multiple,_=null==v?void 0:v.recordSelectDataSourceKey,S=null==v?void 0:v.recordSelectTargetCollection,w=null==v?void 0:v.recordSelectValueField,F=(0,n.useMemo)(()=>cD({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,b,x,M,_,S,w]),k=(0,n.useMemo)(()=>cY(F,e=>c.t(e)),[F,c]);return(0,n.useEffect)(()=>{if(!k.length){void 0!==r&&(null==a||a(void 0));return}if(k.some(e=>e.value===r))return;let e=cE({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,k,y,r,b,x,M,_,S,w]),(0,m.jsx)(ni.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:k,value:r,onChange:a,disabled:0===k.length})});class cO extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[i,n]=t,r={key:i,label:e.t(n.meta.label),sort:n.meta.sort??999,searchable:!!(null==(l=n.meta)?void 0:l.searchable),searchPlaceholder:null==(o=n.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:i},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cB(e){let t=(0,f.useFlowEngine)(),l=(0,n.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,i]=(0,n.useState)(()=>l());(0,n.useEffect)(()=>{i(l())},[l]);let r=(0,n.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let n=null==t?void 0:t.dataSourceManager;if(!n)return;let r=[];if(1===e.length){let e=o.value,t=n.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=n.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,i(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),i=null==o?void 0:o.targetCollection;r=((null==i?void 0:i.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,i(e=>[...e])},[t]);return(0,m.jsx)(x.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cO.renderMode=f.ModelRenderMode.RenderFunction,cO.define({hide:!0,label:(0,f.tExpr)("Others")});var cV=__nested_rspack_require_1264766__(6175);let cH=(e,t,l)=>{var o,i,n;if((null==l||null==(i=l.form)||null==(o=i.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(n=l.t)?void 0:n.call(l,"The field value is required"))||"The field value is required"};class cq extends cO{buildRecordSelectCollectionField(e,t){var l,o,i,n,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(i=u.getCollection)?void 0:i.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(n=c.titleCollectionField)?void 0:n.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let i=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),n=this.getCurrentOperatorMeta(),r=(0,cV.S)(this.operator,i);return(null==n?void 0:n.noValue)&&!Array.isArray(null==n||null==(o=n.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},i=cD({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),n=this.operator||e.operator;return n&&i.find(e=>e.value===n)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cq.define({label:'{{t("Custom field")}}',sort:1}),cq.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cB,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":cx,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":cb,properties:{recordSelectTargetCollection:{type:"string","x-validator":cH},recordSelectTitleField:{type:"string","x-validator":cH},recordSelectValueField:{type:"string","x-validator":cH}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cN,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,L.uid)().slice(0,4)}`}),handler(e,t){var l,o;let i,{fieldModel:n,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===n){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},i=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||i.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=i.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:n,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===n){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}i&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:i});let p=!!cD({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cE({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let c$="__filter_form_value_options__",cU=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cz=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cK=(e,t,l,o,i,n)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],i=null==e?void 0:e[l];null!=t&&null!=i&&r.set(t,i)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let i=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return i;let a=r.get(i);return null!=a?a:cz(i,n)}if(o===l)return e;let t=r.get(e);return null!=t?t:cz(e,n)};return(i&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cU(e,n))},cG=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cW=(e,t)=>{var l,o;let i=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==i?void 0:i.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==i?void 0:i.name)||e.fieldPath,u=(0,n.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll(">",">"):null},cJ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:i,allowMultiple:n,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(i&&n),g=uH(r,o,h),y=(0,f.useFlowModel)(),b=!!y.context.flowSettingsEnabled,{t:M}=(0,v.useTranslation)(),_=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:M("Add")+` “${t}” `})]})},S=cW(y,u);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uV(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uB,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
|
|
888
|
+
`,u4=e=>{var t,l;let{fieldNames:o,value:i,multiple:r,allowMultiple:a,keepDropdownOpenOnSelect:s=!1,options:d,quickCreate:u,onChange:c,allowCreate:p=!0,allowEdit:h=!0,className:g,...y}=e,b=(0,f.useFlowModel)(),M=uI(o,null==b||null==(l=b.context)||null==(t=l.collectionField)?void 0:t.targetCollection),_=!!(r&&a),S=!!(s&&_),w=uH(d,i,_),F=(0,n.useRef)();F.current||(F.current=b.__keepOpenOnSelectRuntime||(b.__keepOpenOnSelectRuntime={open:void 0,preventCloseOnSelect:!1}));let k=F.current,[C,A]=(0,n.useState)(k.open),P=e=>{Object.assign(k,e),Object.prototype.hasOwnProperty.call(e,"open")&&A(k.open)},T=!!b.context.flowSettingsEnabled,{t:I}=(0,v.useTranslation)();uN({model:b,value:i,isMultiple:_,fieldNames:M,onChange:c});let L=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>y.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:I("Add")+` “${t}” `})]})},R=u2(b,h);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...y,className:[u5,g].filter(Boolean).join(" "),allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>y.onCompositionEnd(e,!1),fieldNames:M,options:w,value:uV(i,M,_),mode:_?"multiple":void 0,open:S?C:void 0,onChange:(e,t)=>{c(t)},onSelect:(e,t)=>{var l;S&&P({preventCloseOnSelect:!0,open:!0}),null==(l=y.onSelect)||l.call(y,e,t)},onDropdownVisibleChange:e=>{var t,l;if(S){if(!e&&k.preventCloseOnSelect){P({preventCloseOnSelect:!1,open:!0}),null==(l=y.onDropdownVisibleChange)||l.call(y,!0);return}P({preventCloseOnSelect:!1,open:e})}uZ(b,e),null==(t=y.onDropdownVisibleChange)||t.call(y,e)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)("div",{onMouseDown:()=>{S&&P({preventCloseOnSelect:!0})},children:(0,m.jsx)(uB,{option:t,fieldNames:M})})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:u8,children:e.label}),dropdownRender:e=>{let t=w.some(e=>e[M.label]===y.searchText);return(0,m.jsx)(m.Fragment,{children:"quickAdd"===u&&p&&h&&y.searchText?(0,m.jsxs)(m.Fragment,{children:[!(0===w.length&&y.searchText)&&e,w.length>0&&y.searchText&&!t&&(0,m.jsx)(x.Divider,{style:{margin:0}}),!t&&(0,m.jsx)(L,{searchText:y.searchText})]}):e})}}),"modalAdd"===u&&(p&&h||T)&&(p&&h?(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,children:I("Add new")}):(0,m.jsx)(aQ._T,{forbidden:{actionName:"create"},collection:b.collectionField.targetCollection,message:R,children:(0,m.jsx)(x.Button,{onClick:y.onModalAddClick,disabled:!h,style:{opacity:"0.3"},children:I("Add new")})}))]})};class u3 extends uC{get collectionField(){return this.context.collectionField}onInit(e){super.onInit(e),this.context.defineProperty("collection",{get:()=>{var e;return null==(e=this.context.collectionField)?void 0:e.targetCollection}}),this.setDataSource([])}set onPopupScroll(e){this.setProps({onPopupScroll:e})}set onDropdownVisibleChange(e){this.setProps({onDropdownVisibleChange:e})}set onSearch(e){this.setProps({onSearch:e})}setDataSource(e){this.setProps({options:e})}getDataSource(){return this.props.options}getFilterValue(){var e,t;let l=uI(this.props.fieldNames,null==(e=this.context.collectionField)?void 0:e.targetCollection);return Array.isArray(this.props.value)?this.props.value.map(e=>e[l.value]):null==(t=this.props.value)?void 0:t[l.value]}onMount(){this.onModalAddClick=e=>{this.dispatchEvent("openView",{event:e,onChange:this.props.onChange})},this.onDropdownAddClick=e=>{this.dispatchEvent("dropdownAdd",{search:e,onChange:this.props.onChange})}}set onModalAddClick(e){this.setProps({onModalAddClick:e})}set onDropdownAddClick(e){this.setProps({onDropdownAddClick:e})}change(e){this.props.onChange(e)}render(){return this.context.isMobileLayout?(0,m.jsx)(uJ,{...this.props,loading:this.resource.loading}):(0,m.jsx)(u4,{...this.props})}}let u6={page:1,pageSize:40,loading:!1,hasMore:!0},u9=e=>`__search__${e}`,u7=e=>`__assoc__${e}`;async function ce(e,t){try{var l,o,i,n;let t=e.model.collectionField.targetCollection,r=uI(e.model.props.fieldNames,t).label,a=t.getField(r);if(!a)return;let s=a.getInterfaceOptions(),d=(null==s||null==(i=s.filterable)||null==(o=i.operators)||null==(l=o[0])?void 0:l.value)||"$includes",u=null==(n=e.inputArgs.searchText)?void 0:n.trim(),c=e.model.resource,p=`${r}.${d}`;""===u?c.removeFilterGroup(u9(r)):(c.setPage(1),c.addFilterGroup(u9(r),{[p]:u})),await c.refresh();let m=c.getData();e.model.setDataSource(m),m.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++),e.model.setProps({searchText:u})}catch(t){console.error("AssociationSelectField search flow error:",t),e.model.setDataSource([])}}u3.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){var l;let o=u9(uI(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).label);e.model.onDropdownVisibleChange=t=>{t?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),u6.page=1)},e.model.onPopupScroll=t=>{e.model.dispatchEvent("popupScroll",{event:t,apiClient:e.app.apiClient})},e.model.onSearch=t=>{e.model.dispatchEvent("search",{searchText:t,apiClient:e.app.apiClient})}}}}}),u3.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{async handler(e,t){var l;let o=uI(e.model.props.fieldNames,null==(l=e.model.collectionField)?void 0:l.targetCollection).value,i=e.model.resource,n=e.model.getDataSource();i.setPage(1),await e.model.applyFlow("selectSettings"),await i.refresh();let{count:r}=i.getMeta(),a=i.getData();(!n||r!==n.length||a[0][o]!==n[0][o])&&(e.model.setDataSource(a),e.model.setProps({searchText:null}),a.length<u6.pageSize?u6.hasMore=!1:(u6.hasMore=!0,u6.page++))}}}}),u3.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{async handler(e,t){var l;let{scrollTop:o,scrollHeight:i,clientHeight:n}=(null==(l=e.inputArgs)?void 0:l.event).target;if(!(o+n<i-20)&&!u6.loading&&u6.hasMore){u6.loading=!0;try{let t=e.model.resource;t.setPage(u6.page),await t.refresh();let l=t.getData(),o=e.model.getDataSource()||[];e.model.setDataSource([...o,...l]),l.length<u6.pageSize?(u6.hasMore=!1,u6.page=1):u6.page++}catch(e){console.error("Scroll pagination request failed:",e)}finally{u6.loading=!1}}}}}});let ct=(0,g.debounce)(ce,500);u3.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler:ct}}}),u3.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{async handler(e){var t,l,o;let i=e.createResource(f.MultiRecordResource),n=e.model.context.collectionField,{target:r,dataSourceKey:a,foreignKey:s}=n;i.setDataSourceKey(a),i.setResourceName(r),i.setPageSize(u6.pageSize);let d=(null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter,u=["oho","o2m"].includes(n.interface),c=(null==(o=e.item)?void 0:o.value)||e.record,p=null==c?void 0:c[null==n?void 0:n.sourceKey],m=[];if(!d&&null!=p&&u){let e=`${s}.$eq`;m.push({[e]:p})}if(!d&&u){let e=`${s}.$is`;m.push({[e]:null})}m.length>0&&i.addFilterGroup(u7(s),{$or:m}),e.model.resource=i}},allowEditCheck:{async handler(e){if(e.blockModel instanceof d9.EditFormModel){var t;let l=await e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:null==(t=e.collectionField)?void 0:t.collectionName,actionName:"update",fields:[e.collectionField.name]});e.model.setProps({allowEdit:!!l})}}}}}),u3.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings:e=>!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type),defaultParams:e=>({allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}),handler(e,t){e.model.setProps({allowMultiple:null==t?void 0:t.allowMultiple})}},quickCreate:{title:(0,f.tExpr)("Quick create"),uiMode(e){let t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,l;return!!((null==e||null==(l=e.blockModel)||null==(t=l.constructor)?void 0:t.scene)===sC.P.filter||uX(null==e?void 0:e.model,["SubTableColumnModel","SubTableFieldModel"]))},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}}),u3.registerFlow({key:"dropdownAdd",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"dropdownAdd"},steps:{dropdownAdd:{async handler(e,t){var l,o,i;if("quickAdd"!==e.model.props.quickCreate)return null;let{onChange:n,search:r}=e.inputArgs,a=await e.model.resource.create({[(null==(o=e.model.props)||null==(l=o.fieldNames)?void 0:l.label)||"id"]:r},{refresh:!1});a&&(n(["m2m","o2m"].includes(null==(i=e.collectionField)?void 0:i.interface)&&!1!==e.model.props.allowMultiple?[...e.model.props.value||[],a.data].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey])):a.data),e.message.success(e.t("Saved successfully")),e.model.setProps({searchText:null}))}}}}),u3.registerFlow({key:"popupSettings",title:(0,f.tExpr)("Create record setting"),sort:900,on:{eventName:"openView"},steps:{openView:{title:(0,f.tExpr)("Edit popup"),uiSchema:e=>"modalAdd"!==e.model.props.quickCreate?null:{mode:{type:"string",title:(0,f.tExpr)("Open mode"),enum:[{label:(0,f.tExpr)("Drawer"),value:"drawer"},{label:(0,f.tExpr)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,f.tExpr)("Popup size"),enum:[{label:(0,f.tExpr)("Small"),value:"small"},{label:(0,f.tExpr)("Medium"),value:"medium"},{label:(0,f.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var l,o,i,n,r;let{onChange:a}=e.inputArgs,s={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},d=e.inputArgs.mode||t.mode||"drawer",u=["belongsTo","hasOne"].includes(e.collectionField.type),c=e.inputArgs.size||t.size||"medium",p=null==(l=e.collectionField)?void 0:l.collection,h=(null==(o=e.item)?void 0:o.value)??e.record,f=h?null==p||null==(i=p.getFilterByTK)?void 0:i.call(p,h):void 0,g=null==(n=e.collectionField)?void 0:n.resourceName,v=uL(e,e.inputArgs);e.viewer.open({type:d,width:s[d][c],inheritContext:!1,target:e.layoutContentElement,inputArgs:{parentId:e.model.uid,scene:"create",dataSourceKey:e.collection.dataSourceKey,collectionName:null==(r=e.collectionField)?void 0:r.target,...g&&null!=f?{associationName:g,sourceId:f}:{},...g&&null==f?{sourceAssociationName:g}:{},collectionField:e.collectionField,openerUids:v,onChange:t=>{if(u||!e.model.props.allowMultiple){a(t);let l=e.model.getDataSource()||[];l.push(t),e.model.setDataSource(l)}else{let l=[...e.model.props.value||[],t].filter((t,l,o)=>l===o.findIndex(l=>l[e.collection.filterTargetKey]===t[e.collection.filterTargetKey]));a(l);let o=e.model.getDataSource()||[];e.model.setDataSource(o.concat(l))}}},content:()=>(0,m.jsx)(u1,{model:e.model}),styles:{content:{padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout,..."embed"===d?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}},body:{padding:0}}})}}}}),u3.define({label:(0,f.tExpr)("Dropdown select")}),f.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,order:1});class cl extends u3{onInit(e){var t;super.onInit(e);let l=null==(t=this.getStepParams("selectSettings","allowMultiple"))?void 0:t.allowMultiple,o="boolean"==typeof l?l:"boolean"!=typeof this.props.allowMultiple||this.props.allowMultiple;this.setProps({allowMultiple:o,multiple:o,quickCreate:"none"})}}cl.registerFlow({key:"selectSettings",title:(0,f.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,f.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},defaultParams:{allowMultiple:!0},handler(e,t){var l;let o=null==(l=e.model.getStepParams("selectSettings","allowMultiple"))?void 0:l.allowMultiple,i="boolean"==typeof(null==t?void 0:t.allowMultiple)?t.allowMultiple:"boolean"==typeof o?o:"boolean"!=typeof e.model.props.allowMultiple||e.model.props.allowMultiple;e.model.setProps({allowMultiple:i,multiple:i})}}}}),cl.define({label:(0,f.tExpr)("Dropdown select")}),f.FilterableItemModel.bindModelToInterface("FilterFormRecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0,defaultProps:{allowMultiple:!0,multiple:!0,quickCreate:"none"}});var co=__nested_rspack_require_1264766__(6832);class ci extends uk{render(){return(0,m.jsx)(co.DateFilterDynamicComponent,{...this.props})}}let cn=e=>{let{value:t,format:l="YYYY-MM-DD",picker:o="date",showTime:i,...n}=e,r={...n,value:t,format:l,picker:o,showTime:i};return(0,m.jsx)(co.DateFilterDynamicComponent,{...r})};class cr extends ci{setProps(e){super.setProps({...e,showTime:!1,utc:!1})}render(){return(0,m.jsx)(cn,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateOnlyFilterFieldModel",["date"],{isDefault:!0});let ca=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",showTime:o,picker:i="date",...n}=e,r=o&&"date"===i?"YYYY-MM-DD":l;return(0,m.jsx)(co.DateFilterDynamicComponent,{...n,value:t,format:r,picker:i,showTime:o})};class cs extends ci{render(){return(0,m.jsx)(ca,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeNoTzFilterFieldModel",["datetimeNoTz"],{isDefault:!0});let cd=e=>{let{value:t,format:l="YYYY-MM-DD HH:mm:ss",picker:o="date",showTime:i,...n}=e,r=i&&"date"===o?"YYYY-MM-DD":l,a={...n,value:t,format:r,picker:o,showTime:i};return(0,m.jsx)(co.DateFilterDynamicComponent,{...a})};class cu extends ci{setProps(e){super.setProps({...e,utc:!0})}render(){return(0,m.jsx)(cd,{...this.props})}}f.FilterableItemModel.bindModelToInterface("DateTimeTzFilterFieldModel",["createdAt","datetime","updatedAt","unixTimestamp"],{isDefault:!0});let cc="recordSelectDataSourceKey",cp="recordSelectTargetCollection",cm="recordSelectTitleField",ch="recordSelectValueField",cf="allowMultiple",cg="multiple",cv="valueMode",cy=new Set(["belongsTo","belongsToMany","hasOne","hasMany","belongsToArray"]),cb=e=>{var t,l,o,i,r;let{fieldModel:a,source:s=[]}=e,d=(0,lI.useField)(),{t:u}=(0,v.useTranslation)(),c=d.value||{},p=a||(null==c?void 0:c.fieldModel),h=(0,f.useFlowEngine)(),g=(0,f.useFlowContext)(),y=(null==g?void 0:g.dataSourceManager)||(null==h?void 0:h.dataSourceManager)||(null==g||null==(t=g.app)?void 0:t.dataSourceManager),b=(0,et.Sx)(y),M=(0,n.useCallback)(e=>(0,et.w6)(e,y),[y]),_=()=>d.value||{},S=(e,t)=>{d.setValue({..._(),[e]:t})},w=e=>{var t;(null==d||null==(t=d.form)?void 0:t.setValuesIn)&&(null==d?void 0:d.path)?d.form.setValuesIn(d.path,e):d.setValue(e)},F=e=>{var t,l,o,i;let n=`${d.path.toString()}.${e}`,r=null==(i=d.form)||null==(o=i.query)||null==(l=o.call(i,n))||null==(t=l.take)?void 0:t.call(l);return(Array.isArray(null==r?void 0:r.errors)?r.errors:[]).flatMap(e=>e?Array.isArray(e.messages)?e.messages:e.messages?[e.messages]:[]:[]).filter(Boolean)},k=e=>{let t=F(e);return t.length?{feedbackStatus:"error",feedbackText:t.join(", ")}:{}};(0,n.useEffect)(()=>{var e,t,l,o,i,n,r;let a=s.length?s:(null==c?void 0:c.source)||[];if(!a.length)return;let u=!!(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSource)?void 0:e.call(t,a[0])),m=(null==h||null==(o=h.dataSourceManager)||null==(l=o.getDataSources)?void 0:l.call(o))??[],v=(u?a[0]:void 0)||(null==c?void 0:c[cc])||(null==(i=m[0])?void 0:i.key)||"main",y=(u?a.slice(1):a).join("."),b=h.dataSourceManager.getCollectionField(`${v}.${y}`),x=f.FilterableItemModel.getDefaultBindingByField(g.model.context,b);if(!b&&"FilterFormCustomRecordSelectFieldModel"!==p||!x&&"FilterFormCustomRecordSelectFieldModel"!==p)return;let M=(null==b||null==(n=b.getComponentProps)?void 0:n.call(b))||{},S={...(x&&"function"==typeof x.defaultProps?x.defaultProps(g.model.context,d):null==x?void 0:x.defaultProps)||{},...M,..._()};if(("FilterFormCustomRecordSelectFieldModel"===p||!p&&(null==b?void 0:b.target))&&(null==b?void 0:b.target)){let e=b.targetCollection||h.dataSourceManager.getCollection(b.dataSourceKey,b.target);S[cc]=b.dataSourceKey||v,S[cp]=b.target,S[cm]=b.targetCollectionTitleFieldName||(null==e||null==(r=e.titleCollectionField)?void 0:r.name)||S[cm],S[ch]=S[ch]||(null==e?void 0:e.filterTargetKey)||"id",void 0===S[cf]&&void 0===S[cg]&&(S[cf]=!0,S[cg]=!0),S[cv]||(S[cv]="value")}w(S)},[a,p,s.join("."),null==c?void 0:c.source,h]);let C=(0,n.useMemo)(()=>{var e,t;return(null==h||null==(t=h.dataSourceManager)||null==(e=t.getDataSources)?void 0:e.call(t))??[]},[h]),A=(0,n.useMemo)(()=>C.map(e=>({label:e.displayName??e.key,value:e.key})),[C]),P=(null==c?void 0:c[cc])||(null==(l=C[0])?void 0:l.key)||"main",T=P?null==h||null==(i=h.dataSourceManager)||null==(o=i.getDataSource)?void 0:o.call(i,P):void 0,I=null==c?void 0:c[cp],L=I?null==T||null==(r=T.getCollection)?void 0:r.call(T,I):void 0,R=(0,n.useCallback)(e=>e?(null==g?void 0:g.t)?g.t(e):u(e):e,[g,u]),j=(0,n.useMemo)(()=>(null==T?void 0:T.getCollections)?T.getCollections().filter(e=>{var t;return!(null==(t=e.options)?void 0:t.hidden)}).map(e=>({label:R(e.title)||e.name,value:e.name})):[],[T,R]),D=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{if(!b)return!0;let t=(null==e?void 0:e.options)||e;return(0,et.w)(M(null==t?void 0:t.interface))};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]),E=(0,n.useMemo)(()=>{if(!(null==L?void 0:L.getFields))return[];let e=e=>{let t=(null==e?void 0:e.options)||{},l=t.interface||(null==e?void 0:e.interface);if(!1===t.filterable||!l)return!1;if(b){let e=M(l);if(!(null==e?void 0:e.filterable))return!1}let o=t.type||(null==e?void 0:e.type);return!cy.has(o)};return(L.getFields()||[]).filter(t=>e(t)).map(e=>{var t,l;return{label:R(null==(l=e.options)||null==(t=l.uiSchema)?void 0:t.title)||R(e.title)||e.name,value:e.name}})},[L,M,b,R]);if((0,n.useEffect)(()=>{var e;if("FilterFormCustomRecordSelectFieldModel"!==p||!I||(null==c?void 0:c[cm]))return;let t=null==L||null==(e=L.titleCollectionField)?void 0:e.name;t&&d.setValue({..._(),[cm]:t})},[a,p,I,L,c]),(0,n.useEffect)(()=>{if("FilterFormCustomRecordSelectFieldModel"!==p||!I)return;let e=null==c?void 0:c[ch],t=E.map(e=>e.value);if(e&&t.includes(e))return;let l=null==L?void 0:L.filterTargetKey,o=l&&t.includes(l)&&l||t[0];o&&d.setValue({..._(),[ch]:o})},[a,p,I,L,c,E]),(0,n.useEffect)(()=>{"FilterFormCustomRecordSelectFieldModel"!==p||(null==c?void 0:c[cf])===void 0&&(null==c?void 0:c[cg])===void 0&&d.setValue({..._(),[cf]:!0,[cg]:!0})},[a,p,c]),"DateTimeFilterFieldModel"===a)return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Date format"),children:(0,m.jsxs)(x.Radio.Group,{value:c.format||"YYYY-MM-DD",onChange:e=>S("format",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"YYYY/MM/DD",children:u("Year/Month/Day")}),(0,m.jsx)(x.Radio,{value:"YYYY-MM-DD",children:u("Year-Month-Day")}),(0,m.jsx)(x.Radio,{value:"DD/MM/YYYY",children:u("Day/Month/Year")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Time"),children:(0,m.jsx)(x.Checkbox,{checked:c.showTime,onChange:e=>S("showTime",e.target.checked),children:u("Show time")})}),(0,m.jsx)(ni.FormItem,{label:u("Date range"),children:(0,m.jsx)(x.Checkbox,{checked:c.isRange,onChange:e=>S("isRange",e.target.checked),children:u("Show date range")})})]});if("SelectFieldModel"===a){let e=c.options||[];return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ni.FormItem,{label:u("Mode"),children:(0,m.jsxs)(x.Radio.Group,{value:c.mode||"",onChange:e=>S("mode",e.target.value),children:[(0,m.jsx)(x.Radio,{value:"",children:u("Single select")}),(0,m.jsx)(x.Radio,{value:"multiple",children:u("Multiple select")})]})}),(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})]})}if("CheckboxGroupFieldModel"===a||"RadioGroupFieldModel"===a){let e=c.options||[];return(0,m.jsx)(ni.FormItem,{label:u("Options"),children:(0,m.jsxs)(x.Space,{direction:"vertical",size:8,style:{width:"100%"},children:[e.map((t,l)=>(0,m.jsxs)(x.Space,{style:{width:"100%"},size:8,wrap:!0,align:"start",children:[(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option label"),value:t.label,onChange:o=>{let i=[...e];i[l]={...t,label:o.target.value},S("options",i)}}),(0,m.jsx)(x.Input,{style:{flex:1,minWidth:120},placeholder:u("Option value"),value:t.value,onChange:o=>{let i=[...e];i[l]={...t,value:o.target.value},S("options",i)}}),(0,m.jsx)(x.Button,{type:"text",icon:(0,m.jsx)(to.CloseOutlined,{}),onClick:()=>{S("options",e.filter((e,t)=>t!==l))}})]},l)),(0,m.jsx)(x.Button,{type:"dashed",block:!0,icon:(0,m.jsx)(to.PlusOutlined,{}),onClick:()=>{S("options",[...e,{label:"",value:""}])},children:u("Add")})]})})}return"FilterFormCustomRecordSelectFieldModel"===p?(0,m.jsxs)(m.Fragment,{children:[A.length>1&&(0,m.jsx)(ni.FormItem,{label:u("Data source"),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:P,options:A,onChange:e=>{d.setValue({...c,[cc]:e,[cp]:void 0,[cm]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Target collection"),asterisk:!0,...k(cp),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Select collection"),value:I,options:j,onChange:e=>{d.setValue({...c,[cp]:e,[cm]:void 0})}})}),(0,m.jsx)(ni.FormItem,{label:u("Title field"),asterisk:!0,...k(cm),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[cm],options:D,onChange:e=>S(cm,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Used for display in the dropdown and selected tags.")}),(0,m.jsx)(ni.FormItem,{label:u("Value field"),asterisk:!0,...k(ch),children:(0,m.jsx)(x.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:u("Please select"),value:null==c?void 0:c[ch],options:E,onChange:e=>S(ch,e)})}),(0,m.jsx)("div",{style:{color:"var(--colorTextDescription)",marginTop:-8,marginBottom:8},children:u("Stored as the field value for filtering (usually the primary key).")}),(0,m.jsx)(ni.FormItem,{label:u("Multiple"),children:(0,m.jsx)(x.Checkbox,{checked:(null==c?void 0:c[cf])!==!1,onChange:e=>{let t=e.target.checked;d.setValue({...c,[cf]:t,[cg]:t})},children:u("Allow multiple selection")})})]}):null};function cx(e){let{source:t=[],onChange:l}=e,o=(0,f.useFlowEngine)(),i=(0,f.useFlowContext)(),r=e.valueMap||{},a=t.join("."),s=(0,n.useRef)(),d=(0,n.useMemo)(()=>e=>r&&r[e]?r[e]:e,[r]),u=(0,n.useMemo)(()=>{if(!t.length)return;let e=o.dataSourceManager.getCollectionField(a),l=f.FilterableItemModel.getDefaultBindingByField(i.model.context,e);if(l)return d(l.modelName)},[a,d]);return(0,n.useEffect)(()=>{if(!u){s.current=a;return}let t=void 0!==s.current&&s.current!==a;s.current=a;let o=d(e.value);if(e.value&&e.value!==o&&o!==u){null==l||l(o);return}(!e.value||t)&&o!==u&&(null==l||l(u))},[u,l,e.value,a,d]),(0,m.jsx)(ni.Select,{allowClear:!0,...e,value:d(e.value??u)})}let cM={InputFieldModel:et.II.string,NumberFieldModel:et.II.number,DateTimeFilterFieldModel:et.II.datetime,SelectFieldModel:e=>(null==e?void 0:e.mode)==="multiple"?et.II.array:et.II.enumType,RadioGroupFieldModel:et.II.enumType,CheckboxGroupFieldModel:et.II.array},c_=new Set(["$in","$notIn","$empty","$notEmpty","$includes","$notIncludes"]),cS={label:'{{t("is any of")}}',value:"$in",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cw={label:'{{t("is none of")}}',value:"$notIn",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},cF={input:et.II.string,email:et.II.string,phone:et.II.string,uuid:et.II.string,url:et.II.string,nanoid:et.II.string,textarea:et.II.string,markdown:et.II.bigField,vditor:et.II.bigField,richText:et.II.bigField,password:et.II.string,color:et.II.string,number:et.II.number,integer:et.II.number,id:et.II.id,snowflakeId:et.II.number,dateOnly:et.II.datetime,datetime:et.II.datetime,datetimeNoTz:et.II.datetime,unixTimestamp:et.II.datetime,time:et.II.time,select:et.II.enumType,multipleSelect:et.II.array,radioGroup:et.II.enumType,checkboxGroup:et.II.array,checkbox:et.II.boolean};function ck(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=cM[e];return l?"function"==typeof l?l(t)||[]:l||[]:[]}function cC(e){var t,l,o,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!Array.isArray(n)||0===n.length)return;let a=!!(null==e||null==(l=e.dataSourceManager)||null==(t=l.getDataSource)?void 0:t.call(l,n[0])),s=a?n[0]:r||"main",d=(a?n.slice(1):n).join(".");if(d)return null==e||null==(i=e.dataSourceManager)||null==(o=i.getCollectionField)?void 0:o.call(i,`${s}.${d}`)}function cA(e){var t,l,o,i;let n;if(!e)return[];let r=null==(t=e.filterable)?void 0:t.operators;if(Array.isArray(r)&&r.length>0)return r;try{n=null==(i=e.getInterfaceOptions)||null==(o=i.call(e))||null==(l=o.filterable)?void 0:l.operators}catch(e){n=void 0}return Array.isArray(n)&&n.length>0?n:e.interface&&cF[e.interface]?cF[e.interface]:(null===et.II||void 0===et.II?void 0:et.II[e.type])||[]}function cP(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"boolean"==typeof(null==e?void 0:e.multiple)?e.multiple:"boolean"!=typeof(null==e?void 0:e.allowMultiple)||e.allowMultiple}function cT(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set;return e.filter(e=>!(!(null==e?void 0:e.value)||t.has(e.value))&&(t.add(e.value),!0))}function cI(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.some(e=>(null==e?void 0:e.value)==="$in"),l=e.some(e=>(null==e?void 0:e.value)==="$notIn"),o=e.filter(e=>c_.has(null==e?void 0:e.value)&&(null==e?void 0:e.value)!=="$in"&&(null==e?void 0:e.value)!=="$notIn"||(null==e?void 0:e.noValue)||(null==e?void 0:e.value)==="$exists"||(null==e?void 0:e.value)==="$notExists"),i=e.some(e=>(null==e?void 0:e.value)&&!e.noValue&&"$exists"!==e.value&&"$notExists"!==e.value),n=i||t,r=i||l,a=[];return n&&a.push(cS),r&&a.push(cw),cT([...a,...o])}function cL(e){var t,l,o,i,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=cC(e,a,null==r?void 0:r.recordSelectDataSourceKey),d=(null==s?void 0:s.dataSourceKey)||(null==a?void 0:a[0])||"main",u=(null==r?void 0:r.recordSelectDataSourceKey)||d,c=(null==r?void 0:r.recordSelectTargetCollection)||(null==s||null==(t=s.targetCollection)?void 0:t.name)||(null==s?void 0:s.target);if(!c)return;let p=null==e||null==(o=e.dataSourceManager)||null==(l=o.getCollection)?void 0:l.call(o,u,c);if(!p)return;let m=(null==r?void 0:r.recordSelectValueField)||(null==p?void 0:p.filterTargetKey)||(null==p||null==(i=p.getPrimaryKey)?void 0:i.call(p));if(m)return null==(n=p.getField)?void 0:n.call(p,m)}function cR(e){let{flowEngine:t,fieldModelProps:l={},source:o=[]}=e,i=cL(t,l,o),n=cA(i);return{operatorList:cP(l)?cI(n):n,meta:i}}function cj(e){let{flowEngine:t,fieldModel:l,fieldModelProps:o={},source:i=[]}=e;if("FilterFormCustomRecordSelectFieldModel"===l)return cR(e);let n=cC(t,i);if("SelectFieldModel"===l&&(null==o?void 0:o.mode)==="multiple"&&n){let e=cA(n);return{operatorList:a0(n)?ck(l,o):cI(e),meta:n}}let r=ck(l,o);return r.length>0?{operatorList:r,meta:{fieldModel:l}}:{operatorList:cA(n),meta:n}}function cD(e){let{operatorList:t,meta:l}=cj(e);return cT((t||[]).filter(e=>!(null==e?void 0:e.visible)||e.visible(l)))}function cE(e){var t,l;let{fieldModel:o,fieldModelProps:i={}}=e,n=cD(e);if("DateTimeFilterFieldModel"===o&&(null==i?void 0:i.isRange)){let e=n.find(e=>"$dateBetween"===e.value);if(e)return e.value}return(null==(t=n.find(e=>e.selected))?void 0:t.value)||(null==(l=n[0])?void 0:l.value)}function cY(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return e.map(e=>({...e,label:t(e.label),value:e.value}))}let cN=(0,f.observer)(e=>{var t;let{fieldModel:l,source:o=[],fieldModelProps:i={},value:r,onChange:a,...s}=e,d=(0,lI.useField)(),u=(0,f.useFlowEngine)(),c=(0,f.useFlowContext)(),p=(null==d||null==(t=d.form)?void 0:t.values)||{},h=l||(null==p?void 0:p.fieldModel),g=o.length?o:(null==p?void 0:p.source)||[],v=(null==p?void 0:p.fieldModelProps)&&Object.keys(p.fieldModelProps).length>0?p.fieldModelProps:i,y=Array.isArray(g)?g.join("."):"",b=null==v?void 0:v.mode,x=null==v?void 0:v.allowMultiple,M=null==v?void 0:v.multiple,_=null==v?void 0:v.recordSelectDataSourceKey,S=null==v?void 0:v.recordSelectTargetCollection,w=null==v?void 0:v.recordSelectValueField,F=(0,n.useMemo)(()=>cD({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v}),[u,h,y,b,x,M,_,S,w]),k=(0,n.useMemo)(()=>cY(F,e=>c.t(e)),[F,c]);return(0,n.useEffect)(()=>{if(!k.length){void 0!==r&&(null==a||a(void 0));return}if(k.some(e=>e.value===r))return;let e=cE({flowEngine:u,fieldModel:h,source:g,fieldModelProps:v});e!==r&&(null==a||a(e))},[u,h,a,k,y,r,b,x,M,_,S,w]),(0,m.jsx)(ni.Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",placeholder:c.t("Please select"),...s,options:k,value:r,onChange:a,disabled:0===k.length})});class cO extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FilterFormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o;let[i,n]=t,r={key:i,label:e.t(n.meta.label),sort:n.meta.sort??999,searchable:!!(null==(l=n.meta)?void 0:l.searchable),searchPlaceholder:null==(o=n.meta)?void 0:o.searchPlaceholder};return r.createModelOptions={use:i},r});return g.default.sortBy([...o(t),...o(l)],"sort")}}function cB(e){let t=(0,f.useFlowEngine)(),l=(0,n.useCallback)(()=>{let e=null==t?void 0:t.dataSourceManager;return e?e.getDataSources().map(e=>({value:e.key,label:e.displayName??e.key,isLeaf:!1,meta:{type:"dataSource",dataSourceKey:e.key}})):[]},[t]),[o,i]=(0,n.useState)(()=>l());(0,n.useEffect)(()=>{i(l())},[l]);let r=(0,n.useCallback)(e=>{var l;let o=e[e.length-1];if(!o||(null==(l=o.children)?void 0:l.length))return;let n=null==t?void 0:t.dataSourceManager;if(!n)return;let r=[];if(1===e.length){let e=o.value,t=n.getDataSource(e);r=((null==t?void 0:t.getCollections())??[]).map(t=>({value:t.name,label:t.title,isLeaf:!1,meta:{type:"collection",dataSourceKey:e,collectionName:t.name,fullPath:t.name}}))}else{let e=o.meta||{},t=e.dataSourceKey,l=n.getDataSource(t),a=null==l?void 0:l.collectionManager;if(!l||!a){o.isLeaf=!0,i(e=>[...e]);return}if("collection"===e.type){let l=a.getCollection(e.collectionName);r=((null==l?void 0:l.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}else if("field"===e.type){let o=l.getCollectionField(e.fullPath),i=null==o?void 0:o.targetCollection;r=((null==i?void 0:i.getFields())??[]).filter(e=>e.filterable).map(l=>{let o=`${e.fullPath}.${l.name}`,i=!!l.targetCollection;return{value:l.name,label:l.title,isLeaf:!i,meta:{type:"field",dataSourceKey:t,fullPath:o}}}).sort((e,t)=>t.isLeaf?0:-1)}}r.length?o.children=r:o.isLeaf=!0,i(e=>[...e])},[t]);return(0,m.jsx)(x.Cascader,{allowClear:!0,...e,options:o,loadData:r})}cO.renderMode=f.ModelRenderMode.RenderFunction,cO.define({hide:!0,label:(0,f.tExpr)("Others")});var cV=__nested_rspack_require_1264766__(6175);let cH=(e,t,l)=>{var o,i,n;if((null==l||null==(i=l.form)||null==(o=i.values)?void 0:o.fieldModel)==="FilterFormCustomRecordSelectFieldModel"&&(null==e||""===e))return(null==l||null==(n=l.t)?void 0:n.call(l,"The field value is required"))||"The field value is required"};class cq extends cO{buildRecordSelectCollectionField(e,t){var l,o,i,n,r,a;let s=(null==t?void 0:t.recordSelectDataSourceKey)||"main",d=null==t?void 0:t.recordSelectTargetCollection;if(!d)return;let u=null==(o=e.dataSourceManager)||null==(l=o.getDataSource)?void 0:l.call(o,s),c=null==u||null==(i=u.getCollection)?void 0:i.call(u,d);if(!u||!c)return;let p=(null==t?void 0:t.recordSelectTitleField)||(null==(n=c.titleCollectionField)?void 0:n.name)||(null==(a=c.titleCollectionField)||null==(r=a.options)?void 0:r.name),m=(null==t?void 0:t.recordSelectValueField)||c.filterTargetKey||"id",h=new f.CollectionField({name:(null==t?void 0:t.name)||"recordSelect",interface:"m2o",type:"belongsTo",target:d,dataSourceKey:s,uiSchema:{"x-component":"Select"},fieldNames:{label:p,value:m}});return h.setCollection(c),h}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}onInit(e){super.onInit(e),this.debouncedDoFilter=(0,g.debounce)(this.doFilter.bind(this),300)}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var e,t,l,o;let i=(null==(e=this.customFieldModelInstance)?void 0:e.getFilterValue)?this.customFieldModelInstance.getFilterValue():null==(t=this.context.form)?void 0:t.getFieldValue(this.props.name),n=this.getCurrentOperatorMeta(),r=(0,cV.S)(this.operator,i);return(null==n?void 0:n.noValue)&&!Array.isArray(null==n||null==(o=n.schema)||null==(l=o["x-component-props"])?void 0:l.options)||r}getCurrentOperatorMeta(){let e=this.getStepParams("formItemSettings","fieldSettings")||{},t=e.fieldModel,l=e.source||[],o=this.customFieldProps||e.fieldModelProps||{},i=cD({flowEngine:this.flowEngine,fieldModel:t,source:l,fieldModelProps:o}),n=this.operator||e.operator;return n&&i.find(e=>e.value===n)||null}getValueProps(e){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,g.isEqual)(this.lastAutoTriggerValue,e)||(this.lastAutoTriggerValue=(0,g.cloneDeep)(e),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,g.cloneDeep)(e))),{value:e,onKeyDown:this.handleEnterPress.bind(this)}}render(){return this.customFieldModelInstance?(0,m.jsx)(f.FormItem,{...this.props,getValueProps:this.getValueProps.bind(this),children:(0,m.jsx)(f.FieldModelRenderer,{model:this.customFieldModelInstance})}):null}constructor(...e){super(...e),this.customFieldModelInstance=null,this.customFieldProps=null,this.autoTriggerInitialized=!1,this.handleEnterPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.doFilter())}}}cq.define({label:'{{t("Custom field")}}',sort:1}),cq.registerFlow({key:"formItemSettings",title:(0,f.tExpr)("Form item settings"),steps:{fieldSettings:{preset:!0,title:(0,f.tExpr)("Field settings"),uiSchema:{title:{type:"string",title:(0,f.tExpr)("Field title"),"x-component":"Input","x-decorator":"FormItem",required:!0},name:{type:"string",title:(0,f.tExpr)("Field name"),"x-component":"Input","x-decorator":"FormItem",required:!0,description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with a letter.")}}'},source:{type:"array",title:(0,f.tExpr)("Field source"),"x-decorator":"FormItem","x-component":cB,"x-component-props":{placeholder:(0,f.tExpr)("Select a source field to use metadata of the field")},description:(0,f.tExpr)("Select a source field to use metadata of the field")},fieldModel:{type:"string",title:(0,f.tExpr)("Field type"),"x-component":cx,"x-decorator":"FormItem",required:!0,enum:[{label:(0,f.tExpr)("Input"),value:"InputFieldModel"},{label:(0,f.tExpr)("Number"),value:"NumberFieldModel"},{label:(0,f.tExpr)("Date"),value:"DateTimeFilterFieldModel"},{label:(0,f.tExpr)("Select"),value:"SelectFieldModel"},{label:(0,f.tExpr)("Radio group"),value:"RadioGroupFieldModel"},{label:(0,f.tExpr)("Checkbox group"),value:"CheckboxGroupFieldModel"},{label:(0,f.tExpr)("Record select"),value:"FilterFormCustomRecordSelectFieldModel"}],"x-component-props":{placeholder:(0,f.tExpr)("Please select"),valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}},"x-reactions":[{dependencies:["source"],fulfill:{state:{componentProps:{source:"{{$deps[0]}}",valueMap:{RecordSelectFieldModel:"FilterFormCustomRecordSelectFieldModel"}}}}}]},fieldModelProps:{type:"object",title:(0,f.tExpr)("Component properties"),"x-component":cb,properties:{recordSelectTargetCollection:{type:"string","x-validator":cH},recordSelectTitleField:{type:"string","x-validator":cH},recordSelectValueField:{type:"string","x-validator":cH}},"x-reactions":[{dependencies:["fieldModel","source"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}"}}}}]},operator:{type:"string",title:(0,f.tExpr)("Operator"),"x-component":cN,"x-decorator":"FormItem",required:!0,"x-reactions":[{dependencies:["fieldModel","source","fieldModelProps"],fulfill:{state:{componentProps:{fieldModel:"{{$deps[0]}}",source:"{{$deps[1]}}",fieldModelProps:"{{$deps[2] || {}}}"}}}}]}},defaultParams:e=>({name:`f_${(0,L.uid)().slice(0,4)}`}),handler(e,t){var l,o;let i,{fieldModel:n,fieldModelProps:r={},title:a,name:s,source:d=[],operator:u}=t;e.model.setProps({label:a,name:s});let c=r;if("FilterFormCustomRecordSelectFieldModel"===n){let t=(null==r?void 0:r.allowMultiple)===void 0||!!(null==r?void 0:r.allowMultiple),o=(null==r?void 0:r.multiple)===void 0?t:!!(null==r?void 0:r.multiple);if(c={...r,allowMultiple:t,multiple:o,valueMode:(null==r?void 0:r.valueMode)||"value"},i=e.model.buildRecordSelectCollectionField(e,{...c,name:s})){let e=(null==r?void 0:r.recordSelectTitleField)||i.targetCollectionTitleFieldName,t=(null==r?void 0:r.recordSelectValueField)||(null==(l=i.targetCollection)?void 0:l.filterTargetKey)||"id";e&&t&&(c={...c,fieldNames:{label:e,value:t}})}}if(e.model.customFieldModelInstance?e.model.customFieldModelInstance.setProps({allowClear:!0,...c}):e.model.customFieldModelInstance=e.model.flowEngine.createModel({use:n,props:{allowClear:!0,...c}}),"FilterFormCustomRecordSelectFieldModel"===n){let t=(null==c?void 0:c.recordSelectTitleField)||(null==c||null==(o=c.fieldNames)?void 0:o.label);t&&e.model.customFieldModelInstance.setStepParams("selectSettings","fieldNames",{label:t})}i&&e.model.customFieldModelInstance.context.defineProperty("collectionField",{value:i});let p=!!cD({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}).find(e=>e.value===u);e.model.operator=(p?u:void 0)||cE({flowEngine:e.model.flowEngine,fieldModel:n,source:d,fieldModelProps:c}),e.model.customFieldProps=c}},connectFields:{use:"connectFields"}}});let c$="__filter_form_value_options__",cU=(e,t)=>null!=e&&""!==e&&("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&(!t||!/(int|big)/i.test(t)||/^-?\d+$/.test(e))),cz=(e,t)=>{if("number"==typeof e||"bigint"==typeof e||"string"==typeof e&&/(int|big)/i.test(t||"")&&/^-?\d+$/.test(e))return e},cK=(e,t,l,o,i,n)=>{let r=new Map;t.forEach(e=>{if(!e||"object"!=typeof e)return;let t=null==e?void 0:e[o],i=null==e?void 0:e[l];null!=t&&null!=i&&r.set(t,i)});let a=e=>{if(null==e)return;if("object"==typeof e){let t=null==e?void 0:e[l];if(null!=t)return t;let i=(null==e?void 0:e[o])??(null==e?void 0:e.value);if(o===l)return i;let a=r.get(i);return null!=a?a:cz(i,n)}if(o===l)return e;let t=r.get(e);return null!=t?t:cz(e,n)};return(i&&Array.isArray(e)?e:[e]).map(e=>a(e)).filter(e=>cU(e,n))},cG=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=arguments.length>2?arguments[2]:void 0,o=new Map;return[...e,...t].forEach(e=>{let t=null==e?void 0:e[l];null!=t&&o.set(t,e)}),Array.from(o.values())},cW=(e,t)=>{var l,o;let i=null==e||null==(l=e.context)?void 0:l.collectionField,r=null==i?void 0:i.collection,a=null==r?void 0:r.dataSource,s=null==e||null==(o=e.context)?void 0:o.t,d=(null==i?void 0:i.name)||e.fieldPath,u=(0,n.useMemo)(()=>{if(!s||!a)return"";let e=`${s(a.displayName||a.key)} > `,t=r?`${s(r.title)||r.name||r.tableName} > `:"";return`${e}${t}${d}`},[s,a,r,d]);return!t&&s&&a?s('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:u,actionName:"Update"}).replaceAll(">",">"):null},cJ=e=>{var t;let{fieldNames:l={label:"label",value:"value"},value:o,multiple:i,allowMultiple:n,options:r,quickCreate:a,onChange:s,allowCreate:d=!0,allowEdit:u=!0,valueMode:c="record",...p}=e,h=!!(i&&n),g=uH(r,o,h),y=(0,f.useFlowModel)(),b=!!y.context.flowSettingsEnabled,{t:M}=(0,v.useTranslation)(),_=e=>{let{searchText:t}=e;return(0,m.jsxs)("div",{onClick:()=>p.onDropdownAddClick(t),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,m.jsx)(to.PlusOutlined,{}),(0,m.jsx)("span",{style:{paddingLeft:5},children:M("Add")+` “${t}” `})]})},S=cW(y,u);return(0,m.jsxs)(x.Space.Compact,{style:{width:"100%"},children:[(0,m.jsx)(x.Select,{style:{width:"100%"},...p,allowClear:!0,showSearch:!0,maxTagCount:"responsive",maxTagPlaceholder:e=>(0,m.jsxs)(x.Tooltip,{title:(0,m.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,maxWidth:"100%"},children:e.map(e=>(0,m.jsx)(x.Tag,{style:{margin:0,background:"#fafafa",border:"1px solid #d9d9d9",whiteSpace:"normal",wordBreak:"break-word",maxWidth:"100%"},children:e.label},e.value))}),overlayInnerStyle:{background:"#fff",color:"#000",padding:8,maxWidth:"100%"},color:"#fff",overlayStyle:{pointerEvents:"auto",maxWidth:300},children:["+",e.length,"..."]}),filterOption:!1,labelInValue:!0,onCompositionEnd:e=>p.onCompositionEnd(e,!1),fieldNames:l,options:g,value:uV(o,l,h,c,g),mode:h?"multiple":void 0,onChange:(e,t)=>{"value"===c?Array.isArray(t)?s(t.map(e=>(null==e?void 0:e[l.value])??(null==e?void 0:e.value)).filter(e=>void 0!==e)):s((null==t?void 0:t[l.value])??(null==t?void 0:t.value)):s(t)},optionRender:e=>{let{data:t}=e;return(0,m.jsx)(uB,{option:t,fieldNames:l})},popupMatchSelectWidth:!0,labelRender:e=>(0,m.jsx)("div",{className:(0,A.css)`
|
|
889
889
|
div {
|
|
890
890
|
white-space: nowrap !important;
|
|
891
891
|
overflow: hidden;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client-v2",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.20",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"@formily/antd-v5": "1.2.3",
|
|
28
28
|
"@formily/react": "^2.2.27",
|
|
29
29
|
"@formily/shared": "^2.2.27",
|
|
30
|
-
"@nocobase/evaluators": "2.2.
|
|
31
|
-
"@nocobase/flow-engine": "2.2.
|
|
32
|
-
"@nocobase/sdk": "2.2.
|
|
33
|
-
"@nocobase/shared": "2.2.
|
|
34
|
-
"@nocobase/utils": "2.2.
|
|
30
|
+
"@nocobase/evaluators": "2.2.20",
|
|
31
|
+
"@nocobase/flow-engine": "2.2.20",
|
|
32
|
+
"@nocobase/sdk": "2.2.20",
|
|
33
|
+
"@nocobase/shared": "2.2.20",
|
|
34
|
+
"@nocobase/utils": "2.2.20",
|
|
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": "
|
|
52
|
+
"gitHead": "d9c3d45cdca9571f6cef8781e0a2d86566dce11b"
|
|
53
53
|
}
|
|
@@ -66,6 +66,11 @@ function RemoteModelRenderer({ options }) {
|
|
|
66
66
|
|
|
67
67
|
export function CreateContent({ model, toOne = false }) {
|
|
68
68
|
const ctx = useFlowContext();
|
|
69
|
+
// Quick-create popups isolate business context but must retain the field's configuration mode.
|
|
70
|
+
ctx.defineProperty('flowSettingsEnabled', {
|
|
71
|
+
get: () => model.context.flowSettingsEnabled,
|
|
72
|
+
cache: false,
|
|
73
|
+
});
|
|
69
74
|
const { Header, type } = ctx.view;
|
|
70
75
|
model._closeView = ctx.view.close;
|
|
71
76
|
return (
|
|
@@ -876,6 +881,8 @@ RecordSelectFieldModel.registerFlow({
|
|
|
876
881
|
dataSourceKey: ctx.collection.dataSourceKey,
|
|
877
882
|
collectionName: ctx.collectionField?.target,
|
|
878
883
|
...(associationName && sourceId != null ? { associationName, sourceId } : {}),
|
|
884
|
+
// 上级记录暂无主键(如审批配置态表单)时不能传 associationName,否则弹窗内新建的区块会绑定到关联资源;改传 sourceAssociationName,仅用于展示“当前弹窗上级记录”变量
|
|
885
|
+
...(associationName && sourceId == null ? { sourceAssociationName: associationName } : {}),
|
|
879
886
|
collectionField: ctx.collectionField,
|
|
880
887
|
openerUids,
|
|
881
888
|
onChange: (e) => {
|
|
@@ -0,0 +1,183 @@
|
|
|
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 {
|
|
11
|
+
FlowContext,
|
|
12
|
+
FlowEngine,
|
|
13
|
+
FlowEngineProvider,
|
|
14
|
+
FlowViewContextProvider,
|
|
15
|
+
type FlowModel,
|
|
16
|
+
} from '@nocobase/flow-engine';
|
|
17
|
+
import { cleanup, render, screen, waitFor } from '@testing-library/react';
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
20
|
+
import '../../../index';
|
|
21
|
+
import { BlockGridModel } from '../../../base/BlockGridModel';
|
|
22
|
+
import { RecordSelectFieldModel } from '../RecordSelectFieldModel';
|
|
23
|
+
|
|
24
|
+
type OpenViewHandler = (ctx: unknown, params: Record<string, unknown>) => void;
|
|
25
|
+
|
|
26
|
+
function getOpenViewHandler(): OpenViewHandler {
|
|
27
|
+
const flow = RecordSelectFieldModel.globalFlowRegistry.getFlow('popupSettings');
|
|
28
|
+
const handler = flow?.getStep('openView')?.serialize().handler;
|
|
29
|
+
|
|
30
|
+
if (!handler) {
|
|
31
|
+
throw new Error('popupSettings.openView handler is not registered');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return handler as OpenViewHandler;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function createContext(record: Record<string, unknown>) {
|
|
38
|
+
const open = vi.fn();
|
|
39
|
+
const sourceCollection = {
|
|
40
|
+
getFilterByTK: vi.fn((sourceRecord: Record<string, unknown>) => sourceRecord.id),
|
|
41
|
+
};
|
|
42
|
+
const model = {
|
|
43
|
+
uid: 'record-select-uid',
|
|
44
|
+
props: {
|
|
45
|
+
quickCreate: 'modalAdd',
|
|
46
|
+
allowMultiple: true,
|
|
47
|
+
},
|
|
48
|
+
context: {
|
|
49
|
+
inputArgs: {},
|
|
50
|
+
flowSettingsEnabled: false,
|
|
51
|
+
},
|
|
52
|
+
flowEngine: {
|
|
53
|
+
context: {
|
|
54
|
+
themeToken: {
|
|
55
|
+
colorBgLayout: '#fff',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
open,
|
|
63
|
+
context: {
|
|
64
|
+
inputArgs: { onChange: vi.fn() },
|
|
65
|
+
view: {
|
|
66
|
+
inputArgs: {
|
|
67
|
+
viewUid: 'approval-popup-uid',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
viewer: { open },
|
|
71
|
+
layoutContentElement: {},
|
|
72
|
+
model,
|
|
73
|
+
collection: {
|
|
74
|
+
dataSourceKey: 'main',
|
|
75
|
+
filterTargetKey: 'id',
|
|
76
|
+
},
|
|
77
|
+
collectionField: {
|
|
78
|
+
type: 'hasMany',
|
|
79
|
+
target: 'orgs',
|
|
80
|
+
resourceName: 'users.orgs',
|
|
81
|
+
collection: sourceCollection,
|
|
82
|
+
},
|
|
83
|
+
record,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
describe('RecordSelectFieldModel quick create popup', () => {
|
|
89
|
+
afterEach(() => {
|
|
90
|
+
cleanup();
|
|
91
|
+
vi.restoreAllMocks();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
describe.each(['drawer', 'dialog'])('%s configuration mode', (mode) => {
|
|
95
|
+
it.each([
|
|
96
|
+
{ scenario: 'configuration', modelEnabled: true, globalEnabled: false },
|
|
97
|
+
{ scenario: 'global configuration', modelEnabled: true, globalEnabled: true },
|
|
98
|
+
{ scenario: 'runtime', modelEnabled: false, globalEnabled: false },
|
|
99
|
+
{ scenario: 'read-only configuration', modelEnabled: false, globalEnabled: true },
|
|
100
|
+
])('uses the field configuration state in $scenario', async ({ modelEnabled, globalEnabled }) => {
|
|
101
|
+
const engine = new FlowEngine();
|
|
102
|
+
engine.registerModels({ BlockGridModel });
|
|
103
|
+
engine.flowSettings.enabled = globalEnabled;
|
|
104
|
+
engine.context.defineProperty('themeToken', {
|
|
105
|
+
value: { marginBlock: 16, marginSM: 8, paddingLG: 24 },
|
|
106
|
+
});
|
|
107
|
+
engine.context.defineProperty('t', { value: (key: string) => key });
|
|
108
|
+
const save = vi.fn(async (model: FlowModel) => model.serialize());
|
|
109
|
+
engine.setModelRepository({
|
|
110
|
+
findOne: vi.fn(async () => null),
|
|
111
|
+
save,
|
|
112
|
+
destroy: vi.fn(async () => true),
|
|
113
|
+
move: vi.fn(async () => undefined),
|
|
114
|
+
duplicate: vi.fn(async () => null),
|
|
115
|
+
});
|
|
116
|
+
const load = vi.spyOn(engine, 'loadOrCreateModel');
|
|
117
|
+
const { context, open } = createContext({});
|
|
118
|
+
context.model.context.flowSettingsEnabled = modelEnabled;
|
|
119
|
+
getOpenViewHandler()(context, { mode, size: 'medium' });
|
|
120
|
+
const config = open.mock.calls[0][0];
|
|
121
|
+
expect(config.inheritContext).toBe(false);
|
|
122
|
+
|
|
123
|
+
// Detached popups inherit the engine context, not the approval form's model context.
|
|
124
|
+
const popupContext = new FlowContext();
|
|
125
|
+
popupContext.addDelegate(engine.context);
|
|
126
|
+
popupContext.defineProperty('engine', { value: engine });
|
|
127
|
+
popupContext.defineProperty('view', {
|
|
128
|
+
value: { type: mode, inputArgs: config.inputArgs, Header: () => null, close: vi.fn() },
|
|
129
|
+
});
|
|
130
|
+
const { container } = render(
|
|
131
|
+
<FlowEngineProvider engine={engine}>
|
|
132
|
+
<FlowViewContextProvider context={popupContext}>{config.content()}</FlowViewContextProvider>
|
|
133
|
+
</FlowEngineProvider>,
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
await waitFor(() => expect(container.querySelector('.nb-block-grid')).toBeInTheDocument());
|
|
137
|
+
if (modelEnabled) {
|
|
138
|
+
expect(screen.getByRole('button', { name: /Add block/ })).toBeInTheDocument();
|
|
139
|
+
expect(save).toHaveBeenCalledOnce();
|
|
140
|
+
} else {
|
|
141
|
+
expect(screen.queryByRole('button', { name: /Add block/ })).not.toBeInTheDocument();
|
|
142
|
+
expect(save).not.toHaveBeenCalled();
|
|
143
|
+
}
|
|
144
|
+
expect(load).toHaveBeenCalledWith(
|
|
145
|
+
expect.objectContaining({ use: 'BlockGridModel', parentId: context.model.uid }),
|
|
146
|
+
{ delegateToParent: false, delegate: popupContext, skipSave: !modelEnabled },
|
|
147
|
+
);
|
|
148
|
+
expect(engine.context.flowSettingsEnabled).toBe(globalEnabled);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it('passes the parent record reference when the parent record has a primary key', () => {
|
|
153
|
+
const { context, open } = createContext({ id: 1, nickname: 'Saved user' });
|
|
154
|
+
|
|
155
|
+
getOpenViewHandler()(context, { mode: 'drawer', size: 'medium' });
|
|
156
|
+
|
|
157
|
+
expect(open).toHaveBeenCalledOnce();
|
|
158
|
+
const { inputArgs } = open.mock.calls[0][0];
|
|
159
|
+
expect(inputArgs).toMatchObject({
|
|
160
|
+
scene: 'create',
|
|
161
|
+
collectionName: 'orgs',
|
|
162
|
+
associationName: 'users.orgs',
|
|
163
|
+
sourceId: 1,
|
|
164
|
+
});
|
|
165
|
+
expect(inputArgs).not.toHaveProperty('sourceAssociationName');
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it('only passes sourceAssociationName when the parent record has no primary key yet', () => {
|
|
169
|
+
const { context, open } = createContext({});
|
|
170
|
+
|
|
171
|
+
getOpenViewHandler()(context, { mode: 'drawer', size: 'medium' });
|
|
172
|
+
|
|
173
|
+
expect(open).toHaveBeenCalledOnce();
|
|
174
|
+
const { inputArgs } = open.mock.calls[0][0];
|
|
175
|
+
expect(inputArgs).toMatchObject({
|
|
176
|
+
scene: 'create',
|
|
177
|
+
collectionName: 'orgs',
|
|
178
|
+
sourceAssociationName: 'users.orgs',
|
|
179
|
+
});
|
|
180
|
+
expect(inputArgs).not.toHaveProperty('associationName');
|
|
181
|
+
expect(inputArgs).not.toHaveProperty('sourceId');
|
|
182
|
+
});
|
|
183
|
+
});
|