@nocobase/client-v2 2.1.30 → 2.1.31

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.
@@ -23,6 +23,7 @@ export declare class TableColumnModel extends DisplayItemModel {
23
23
  afterAddAsSubModel(): Promise<void>;
24
24
  renderHiddenInConfig(): React.ReactNode | undefined;
25
25
  static defineChildren(ctx: FlowModelContext): any;
26
+ canQuickEdit(record: Record<string, unknown>): boolean;
26
27
  getColumnProps(): TableColumnProps & {
27
28
  sortField?: string;
28
29
  };
package/es/index.mjs CHANGED
@@ -889,13 +889,13 @@ ctx.render(\`
889
889
  </p>
890
890
  </div>
891
891
  </div>
892
- \`);`.trim()}),async handler(e,t){let{code:l,version:o}=sI(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new u.ElementProxy(t),info:{deprecated:{replacedBy:"ctx.render"}}});let n=(0,u.createSafeNavigator)();await e.runjs(l,{window:(0,u.createSafeWindow)({navigator:n}),document:(0,u.createSafeDocument)(),navigator:n},{version:o})})}}}});var pR=__webpack_require__(4046);function pE(e){let t=[];return null==e||e.split(".").forEach(function(e){isNaN(e)||t.push(String(Number(e)+1))}),t.join(".")}function pY(e){let t=[],l=[],o=[];return e.forEach(e=>{"left"===e.fixed?t.push(e):"right"===e.fixed?o.push(e):l.push(e)}),[...t,...l,...o]}function pN(e,t,l){if("number"==typeof t)e[t]=l;else if("string"==typeof t){let o=t.split("."),n=e;for(let e=0;e<o.length-1;e++)n=n[o[e]];n[o[o.length-1]]=l}}function pO(e){let t=[];return e.forEach(e=>{t.push(e.id),e.children&&Array.isArray(e.children)&&(t=t.concat(pO(e.children)))}),t}function pB(e,t){return Array.isArray(t)?t.map(t=>String((null==e?void 0:e[t])??"")).join("-"):(null==e?void 0:e[t])??""}let pV=e=>{let{heightMode:t,tableAreaRef:l,deps:o=[]}=e,[n,i]=(0,p.useState)(),r=(0,p.useCallback)(()=>{if("specifyValue"!==t&&"fullHeight"!==t)return void i(e=>void 0===e?e:void 0);let e=l.current;if(!e)return;let o=e.getBoundingClientRect().height;if(!o)return;let n=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),r=e.querySelector(".ant-table-pagination"),a=Math.max(0,Math.floor(o-((null==n?void 0:n.getBoundingClientRect().height)??0)-((null==r?void 0:r.getBoundingClientRect().height)??0)));i(e=>e===a?e:a)},[t,l]);return(0,p.useLayoutEffect)(()=>{r()},[r,...o]),(0,p.useEffect)(()=>{if(!l.current||"u"<typeof ResizeObserver)return;let e=l.current,t=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),o=e.querySelector(".ant-table-pagination"),n=new ResizeObserver(()=>r());return n.observe(e),t&&n.observe(t),o&&n.observe(o),()=>n.disconnect()},[r,l,...o]),n};function pH(e){var t,l,o;return(null==(l=e.getStepParams)||null==(t=l.call(e,"tableColumnSettings","fieldNames"))?void 0:t.label)||(null==(o=e.props)?void 0:o.titleField)}function pq(e){var t,l,o,n;let i=e.fieldPath||(null==(t=e.collectionField)?void 0:t.name)||(null==(l=e.props)?void 0:l.dataIndex);if(!(null==(n=e.collectionField)||null==(o=n.isAssociationField)?void 0:o.call(n)))return i;let r=e.collectionField.name||e.fieldPath,a=pH(e)||e.collectionField.targetCollectionTitleFieldName;return r&&a?`${r}.${a}`:i}function p$(e){var t;return(null==e||null==(t=e.column)?void 0:t.sortField)||(null==e?void 0:e.field)}let pz=["dateOnly","dateFormat","format","picker","showTime","timeFormat"],pU=e=>{if(!e)return{};let t={};for(let l of pz)void 0!==e[l]&&(t[l]=e[l]);return t},pK=e=>Object.fromEntries(Object.entries(e).filter(e=>{let[,t]=e;return void 0!==t})),pG=e=>{var t;return null==e||null==(t=e.context)?void 0:t.collectionField},pW=e=>{var t,l,o,n;let i=e.collectionField||pG(e.model),r=e.titleField||(null==(l=e.model)||null==(t=l.props)?void 0:t.titleField);return(null==i||null==(n=i.targetCollection)||null==(o=n.getField)?void 0:o.call(n,r))||i},pJ=e=>(null==e?void 0:e.type)==="time"||(null==e?void 0:e.interface)==="time",pX=e=>(null==e?void 0:e.type)==="dateOnly"||(null==e?void 0:e.interface)==="dateOnly",pQ=e=>{var t,l;return(null==e||null==(t=e.getStepParams)?void 0:t.call(e,"datetimeSettings","dateFormat"))||(null==e||null==(l=e.getStepParams)?void 0:l.call(e,"timeSettings","dateFormat"))},pZ=e=>{var t,l,o;let n=e.collectionField||pG(e.model),i=pW(e),r={...pU(null==n||null==(t=n.getComponentProps)?void 0:t.call(n)),...pU(i!==n?null==i||null==(l=i.getComponentProps)?void 0:l.call(i):void 0),...pU(e.currentProps||(null==(o=e.model)?void 0:o.props)),...pU(pQ(e.model)),...pU(e.params)};if(pJ(i)){let e=r.timeFormat||r.format||"HH:mm:ss";return pK({...r,timeFormat:e,format:e})}let a=r.picker||(e.withDefaults?"date":void 0),s=r.dateFormat||(e.withDefaults?"YYYY-MM-DD":void 0),d=r.timeFormat||(e.withDefaults?"HH:mm:ss":void 0),u=!pX(i)&&r.showTime,c=s||"YYYY-MM-DD",p=d||"HH:mm:ss";return pK({...r,picker:a,dateFormat:s,timeFormat:d,showTime:u,format:u?`${c} ${p}`:c})};function p0(e){let{t}=(0,m.useTranslation)(),l=(0,u.useFlowModel)(),o=l.context.blockModel,n=(null==e?void 0:e.collection)||o.collection,i=n.dataSource,r=l.props.title||l.fieldPath,a=(0,p.useMemo)(()=>{let e=`${t(i.displayName||i.key)} > `,l=n?`${t(n.title)||n.name||n.tableName} > `:"";return`${e}${l}${r}`},[n,i.displayName,i.key,r,t]),d=t('The {{type}} "{{name}}" may have been deleted. Please remove this {{blockType}}.',{type:t("Field"),name:a,blockType:t("Field")}).replaceAll("&gt;",">");return(0,s.jsx)(g.Tooltip,{title:d,children:(0,s.jsx)(e1.ExclamationCircleOutlined,{style:{opacity:"0.3"}})})}function p1(){var e,t;let{t:l}=(0,m.useTranslation)(),o=(0,u.useFlowModel)(),n=o.context.blockModel,i=(null==(e=o.context.collectionField)?void 0:e.collection)||n.collection,r=i.dataSource,a=(null==(t=o.context.collectionField)?void 0:t.name)||o.fieldPath,d=(0,p.useMemo)(()=>{let e=`${l(r.displayName||r.key)} > `,t=i?`${l(i.title)||i.name||i.tableName} > `:"";return`${e}${t}${a}`},[i,r.displayName,r.key,a,l]),{actionName:h}=o.forbidden,f=(0,p.useMemo)(()=>l('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:l((0,c.capitalize)(h))}).replaceAll("&gt;",">"),[h,d,l]);return(0,s.jsx)(g.Tooltip,{title:f,children:(0,s.jsx)(e1.LockOutlined,{style:{opacity:"0.3"}})})}let p2=10;function p5(e){return"number"==typeof e&&e<p2?p2:e}let p8=e=>{let{setOpen:t,t:l,handleChange:o,defaultValue:n}=e,[i,r]=(0,p.useState)(n);return(0,s.jsx)("div",{onClick:e=>{e.stopPropagation(),t(!0)},onMouseLeave:()=>{t(!0)},children:(0,s.jsxs)(g.Space.Compact,{block:!0,children:[(0,s.jsx)(g.InputNumber,{placeholder:l("Custom column width"),min:p2,value:i,onChange:e=>{r(e)},style:{width:"100%",minWidth:200}}),(0,s.jsx)(g.Button,{type:"primary",onClick:()=>o(p5(i)),children:"OK"})]})})},p4={dateOnly:void 0,dateFormat:void 0,format:void 0,picker:void 0,showTime:void 0,timeFormat:void 0};class p3 extends u.DisplayItemModel{async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}renderHiddenInConfig(){return this.renderOriginal.call(this)}static defineChildren(e){let t=e.model.collection||e.collection;return t.getFields().map(l=>{var o;let n=this.getDefaultBindingByField(e,l,{fallbackToTargetTitleField:!0});if(!n||(null==(o=l.options)?void 0:o.treeChildren))return null;let i=n.modelName,r=e.fieldPath?`${e.fieldPath}.${l.name}`:l.name;return{key:r,label:l.title,refreshTargets:["TableCustomColumnModel/TableJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===r&&"TableColumnModel"===e.use},useModel:this.name,createModelOptions:()=>({use:this.name,stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:r}}},subModels:{field:{use:i,props:"function"==typeof n.defaultProps?n.defaultProps(e,l):n.defaultProps}}})}}).filter(Boolean)}getColumnProps(){if(!this.props.width)return;let e=(0,s.jsx)(u.Droppable,{model:this,children:(0,s.jsx)(u.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 7px",margin:"-11px -7px"},showBorder:!1,settingsMenuLevel:2,extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}],children:(0,s.jsx)("div",{className:(0,S.css)`
892
+ \`);`.trim()}),async handler(e,t){let{code:l,version:o}=sI(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new u.ElementProxy(t),info:{deprecated:{replacedBy:"ctx.render"}}});let n=(0,u.createSafeNavigator)();await e.runjs(l,{window:(0,u.createSafeWindow)({navigator:n}),document:(0,u.createSafeDocument)(),navigator:n},{version:o})})}}}});var pR=__webpack_require__(4046);function pE(e){let t=[];return null==e||e.split(".").forEach(function(e){isNaN(e)||t.push(String(Number(e)+1))}),t.join(".")}function pY(e){let t=[],l=[],o=[];return e.forEach(e=>{"left"===e.fixed?t.push(e):"right"===e.fixed?o.push(e):l.push(e)}),[...t,...l,...o]}function pN(e,t,l){if("number"==typeof t)e[t]=l;else if("string"==typeof t){let o=t.split("."),n=e;for(let e=0;e<o.length-1;e++)n=n[o[e]];n[o[o.length-1]]=l}}function pO(e){let t=[];return e.forEach(e=>{t.push(e.id),e.children&&Array.isArray(e.children)&&(t=t.concat(pO(e.children)))}),t}function pB(e,t){return Array.isArray(t)?t.map(t=>String((null==e?void 0:e[t])??"")).join("-"):(null==e?void 0:e[t])??""}let pV=e=>{let{heightMode:t,tableAreaRef:l,deps:o=[]}=e,[n,i]=(0,p.useState)(),r=(0,p.useCallback)(()=>{if("specifyValue"!==t&&"fullHeight"!==t)return void i(e=>void 0===e?e:void 0);let e=l.current;if(!e)return;let o=e.getBoundingClientRect().height;if(!o)return;let n=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),r=e.querySelector(".ant-table-pagination"),a=Math.max(0,Math.floor(o-((null==n?void 0:n.getBoundingClientRect().height)??0)-((null==r?void 0:r.getBoundingClientRect().height)??0)));i(e=>e===a?e:a)},[t,l]);return(0,p.useLayoutEffect)(()=>{r()},[r,...o]),(0,p.useEffect)(()=>{if(!l.current||"u"<typeof ResizeObserver)return;let e=l.current,t=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),o=e.querySelector(".ant-table-pagination"),n=new ResizeObserver(()=>r());return n.observe(e),t&&n.observe(t),o&&n.observe(o),()=>n.disconnect()},[r,l,...o]),n};function pH(e){var t,l,o;return(null==(l=e.getStepParams)||null==(t=l.call(e,"tableColumnSettings","fieldNames"))?void 0:t.label)||(null==(o=e.props)?void 0:o.titleField)}function pq(e){var t,l,o,n;let i=e.fieldPath||(null==(t=e.collectionField)?void 0:t.name)||(null==(l=e.props)?void 0:l.dataIndex);if(!(null==(n=e.collectionField)||null==(o=n.isAssociationField)?void 0:o.call(n)))return i;let r=e.collectionField.name||e.fieldPath,a=pH(e)||e.collectionField.targetCollectionTitleFieldName;return r&&a?`${r}.${a}`:i}function p$(e){var t;return(null==e||null==(t=e.column)?void 0:t.sortField)||(null==e?void 0:e.field)}let pz=["dateOnly","dateFormat","format","picker","showTime","timeFormat"],pU=e=>{if(!e)return{};let t={};for(let l of pz)void 0!==e[l]&&(t[l]=e[l]);return t},pK=e=>Object.fromEntries(Object.entries(e).filter(e=>{let[,t]=e;return void 0!==t})),pG=e=>{var t;return null==e||null==(t=e.context)?void 0:t.collectionField},pW=e=>{var t,l,o,n;let i=e.collectionField||pG(e.model),r=e.titleField||(null==(l=e.model)||null==(t=l.props)?void 0:t.titleField);return(null==i||null==(n=i.targetCollection)||null==(o=n.getField)?void 0:o.call(n,r))||i},pJ=e=>(null==e?void 0:e.type)==="time"||(null==e?void 0:e.interface)==="time",pX=e=>(null==e?void 0:e.type)==="dateOnly"||(null==e?void 0:e.interface)==="dateOnly",pQ=e=>{var t,l;return(null==e||null==(t=e.getStepParams)?void 0:t.call(e,"datetimeSettings","dateFormat"))||(null==e||null==(l=e.getStepParams)?void 0:l.call(e,"timeSettings","dateFormat"))},pZ=e=>{var t,l,o;let n=e.collectionField||pG(e.model),i=pW(e),r={...pU(null==n||null==(t=n.getComponentProps)?void 0:t.call(n)),...pU(i!==n?null==i||null==(l=i.getComponentProps)?void 0:l.call(i):void 0),...pU(e.currentProps||(null==(o=e.model)?void 0:o.props)),...pU(pQ(e.model)),...pU(e.params)};if(pJ(i)){let e=r.timeFormat||r.format||"HH:mm:ss";return pK({...r,timeFormat:e,format:e})}let a=r.picker||(e.withDefaults?"date":void 0),s=r.dateFormat||(e.withDefaults?"YYYY-MM-DD":void 0),d=r.timeFormat||(e.withDefaults?"HH:mm:ss":void 0),u=!pX(i)&&r.showTime,c=s||"YYYY-MM-DD",p=d||"HH:mm:ss";return pK({...r,picker:a,dateFormat:s,timeFormat:d,showTime:u,format:u?`${c} ${p}`:c})};function p0(e){let{t}=(0,m.useTranslation)(),l=(0,u.useFlowModel)(),o=l.context.blockModel,n=(null==e?void 0:e.collection)||o.collection,i=n.dataSource,r=l.props.title||l.fieldPath,a=(0,p.useMemo)(()=>{let e=`${t(i.displayName||i.key)} > `,l=n?`${t(n.title)||n.name||n.tableName} > `:"";return`${e}${l}${r}`},[n,i.displayName,i.key,r,t]),d=t('The {{type}} "{{name}}" may have been deleted. Please remove this {{blockType}}.',{type:t("Field"),name:a,blockType:t("Field")}).replaceAll("&gt;",">");return(0,s.jsx)(g.Tooltip,{title:d,children:(0,s.jsx)(e1.ExclamationCircleOutlined,{style:{opacity:"0.3"}})})}function p1(){var e,t;let{t:l}=(0,m.useTranslation)(),o=(0,u.useFlowModel)(),n=o.context.blockModel,i=(null==(e=o.context.collectionField)?void 0:e.collection)||n.collection,r=i.dataSource,a=(null==(t=o.context.collectionField)?void 0:t.name)||o.fieldPath,d=(0,p.useMemo)(()=>{let e=`${l(r.displayName||r.key)} > `,t=i?`${l(i.title)||i.name||i.tableName} > `:"";return`${e}${t}${a}`},[i,r.displayName,r.key,a,l]),{actionName:h}=o.forbidden,f=(0,p.useMemo)(()=>l('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:l((0,c.capitalize)(h))}).replaceAll("&gt;",">"),[h,d,l]);return(0,s.jsx)(g.Tooltip,{title:f,children:(0,s.jsx)(e1.LockOutlined,{style:{opacity:"0.3"}})})}let p2=10;function p5(e){return"number"==typeof e&&e<p2?p2:e}let p8=e=>{let{setOpen:t,t:l,handleChange:o,defaultValue:n}=e,[i,r]=(0,p.useState)(n);return(0,s.jsx)("div",{onClick:e=>{e.stopPropagation(),t(!0)},onMouseLeave:()=>{t(!0)},children:(0,s.jsxs)(g.Space.Compact,{block:!0,children:[(0,s.jsx)(g.InputNumber,{placeholder:l("Custom column width"),min:p2,value:i,onChange:e=>{r(e)},style:{width:"100%",minWidth:200}}),(0,s.jsx)(g.Button,{type:"primary",onClick:()=>o(p5(i)),children:"OK"})]})})},p4={dateOnly:void 0,dateFormat:void 0,format:void 0,picker:void 0,showTime:void 0,timeFormat:void 0};class p3 extends u.DisplayItemModel{async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}renderHiddenInConfig(){return this.renderOriginal.call(this)}static defineChildren(e){let t=e.model.collection||e.collection;return t.getFields().map(l=>{var o;let n=this.getDefaultBindingByField(e,l,{fallbackToTargetTitleField:!0});if(!n||(null==(o=l.options)?void 0:o.treeChildren))return null;let i=n.modelName,r=e.fieldPath?`${e.fieldPath}.${l.name}`:l.name;return{key:r,label:l.title,refreshTargets:["TableCustomColumnModel/TableJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===r&&"TableColumnModel"===e.use},useModel:this.name,createModelOptions:()=>({use:this.name,stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:r}}},subModels:{field:{use:i,props:"function"==typeof n.defaultProps?n.defaultProps(e,l):n.defaultProps}}})}}).filter(Boolean)}canQuickEdit(e){if(!this.props.editable)return!1;if(this.context.skipAclCheck)return!0;let t=this.context.blockModel,l=null==t?void 0:t.collection,o=null==t?void 0:t.resource,n=this.collectionField;if(!l||!o||!n)return!1;let i=l.getFilterByTK(e),r="string"==typeof i||"number"==typeof i?i:void 0;return this.context.acl.can({dataSourceKey:l.dataSourceKey,resourceName:o.getResourceName()||l.name,actionName:"update",recordPkValue:r,allowedActions:o.getMeta("allowedActions"),fields:[n.name]})}getColumnProps(){if(!this.props.width)return;let e=(0,s.jsx)(u.Droppable,{model:this,children:(0,s.jsx)(u.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 7px",margin:"-11px -7px"},showBorder:!1,settingsMenuLevel:2,extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}],children:(0,s.jsx)("div",{className:(0,S.css)`
893
893
  overflow: hidden;
894
894
  text-overflow: ellipsis;
895
895
  white-space: nowrap;
896
896
  width: calc(${this.props.width}px - 16px);
897
897
  opacity: ${this.hidden?"0.3":"1"};
898
- `,children:this.props.title})})}),t=this.render();return{...this.props,sortField:pq(this),ellipsis:!0,title:this.props.tooltip?(0,s.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,s.jsx)(g.Tooltip,{title:this.props.tooltip,children:(0,s.jsx)(e1.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({...this.props.onCell?this.props.onCell(e,t):{},record:e,recordIndex:(null==e?void 0:e.__index)||t,width:this.props.width-16,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,overflowMode:this.props.overflowMode,model:this}),render:(e,l,o)=>(0,s.jsx)(u.FlowModelProvider,{model:this,children:(0,s.jsx)(__rspack_external_react_error_boundary_ac55bb72.ErrorBoundary,{FallbackComponent:u.FlowErrorFallback,children:(()=>{let n=this.__autoFlowError;if(n)throw n;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,s.jsx)(p1,{}):(0,s.jsx)(g.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,s.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,s.jsx)(p0,{})})()})}),hidden:this.hidden&&!this.context.flowSettingsEnabled}}onInit(e){super.onInit(e)}renderItem(){return(e,t,l)=>(0,s.jsx)(s.Fragment,{children:this.mapSubModels("field",e=>{let o=pB(t,this.context.collection.filterTargetKey),n=e.createFork({},`${(null==t?void 0:t.__index)||l}_${o}`),i=(0,u.createRecordMetaFactory)(()=>n.context.collection,n.context.t("Current record"),e=>{try{var t;let l=e.collection,o=e.record,n=null==l?void 0:l.name,i=null==l?void 0:l.dataSourceKey,r=null==l||null==(t=l.getFilterByTK)?void 0:t.call(l,o);if(!n||null==r)return;return{collection:n,dataSourceKey:i,filterByTk:r}}catch(e){return}});n.context.defineProperty("record",{get:()=>t,resolveOnServer:(0,u.createRecordResolveOnServerWithLocal)(()=>n.context.collection,()=>t),meta:i,cache:!1}),n.context.defineProperty("recordIndex",{get:()=>(null==t?void 0:t.__index)||l});let r=this.context.prefixFieldPath?this.fieldPath.replace(`${this.context.prefixFieldPath}.`,""):this.fieldPath,a=(0,c.get)(t,r);return n.setProps({value:a}),(0,s.jsx)(u.FormItem,{...(0,c.omit)(this.props,"title"),value:a,noStyle:!0,children:(0,s.jsx)(u.FieldModelRenderer,{model:n})},e.uid)})})}}p3.renderMode=u.ModelRenderMode.RenderFunction,p3.define({label:(0,u.tExpr)("Display fields"),searchable:!0,searchPlaceholder:(0,u.tExpr)("Search fields")}),p3.registerFlow({key:"tableColumnSettings",sort:500,title:(0,u.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l,o,n;let i=e.model.context.collectionField;if(!i)return;let r=pH(e.model),a=Array.isArray(e.model.subModels.field)?void 0:e.model.subModels.field,s=null==(o=i.targetCollection)||null==(l=o.getField)?void 0:l.call(o,r),d=pQ(a)?pZ({model:a,collectionField:i,titleField:r,currentProps:e.model.props}):void 0,u=i.getComponentProps(),c=i.isAssociationField()&&r?{...u,...null==s||null==(n=s.getComponentProps)?void 0:n.call(s),...d}:{...u,...d};e.model.setProps("title",i.title),e.model.setProps("dataIndex",i.name),await e.model.applySubModelsBeforeRenderFlows("field"),e.model.setProps({...c})}},title:{title:(0,u.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+n}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath})}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},aclCheck:{use:"aclCheck"},quickEdit:{title:(0,u.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},hideInSettings:e=>!!e.model.associationPathName,defaultParams:e=>e.model.collectionField.readonly||e.model.associationPathName?{editable:!1}:{editable:e.model.parent.props.editable||!1},handler(e,t){e.model.setProps("editable",!e.model.associationPathName&&t.editable)}},model:{title:(0,u.tExpr)("Field component"),use:"displayFieldComponent"},sorter:{title:(0,u.tExpr)("Sortable"),uiMode:{type:"switch",key:"sorter"},hideInSettings:async e=>{var t,l;return!e.model.collectionField.getInterfaceOptions().sortable||(null==(l=e.collectionField)||null==(t=l.isAssociationField)?void 0:t.call(l))||!!e.model.associationPathName||e.associationModel},defaultParams:{sorter:!1},handler(e,t){e.model.setProps({sorter:t.sorter})}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"},fieldNames:{use:"titleField",title:(0,u.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||t.label===l.label)return null;let n=e.collectionField.targetCollection,i=n.getField(t.label);if(!i)return null;let r=e.model.constructor.getDefaultBindingByField(e,i),a=e.model.subModels.field,s=dd(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:n.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,i):null==r?void 0:r.defaultProps,p=(null==(o=i.getComponentProps)?void 0:o.call(i))||{},m={...c||{},...p,titleField:t.label},h={...p4,...m};d&&d!==s?await du({parentModel:e.model,targetUse:d,defaultProps:m,fieldSettingsInit:u}):a&&(a.setProps(h),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}),await a.save()),d&&e.model.setStepParams("tableColumnSettings","model",{use:d}),e.model.setProps(h)},defaultParams:e=>{var t,l,o;let n=null==(o=e.model)||null==(l=o.context)||null==(t=l.collectionField)?void 0:t.targetCollectionTitleFieldName;return{label:pH(e.model)||n}},handler(e,t){if(!e.collectionField||!e.collectionField.isAssociationField())return null;e.model.setProps({titleField:t.label})}}}});class p6 extends u.FlowModel{}p6.renderMode=u.ModelRenderMode.RenderFunction,p6.registerFlow({key:"tableColumnSettings",title:(0,u.tExpr)("Table column settings"),steps:{title:{title:(0,u.tExpr)("Column title"),uiSchema:{title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,u.tExpr)("Column title")}}},defaultParams:e=>{var t,l;return{title:e.model.title||(null==(t=e.model.constructor.meta)?void 0:t.title)||(null==(l=e.model.flowEngine.findModelClass((t,l)=>l===e.model.constructor))?void 0:l[0])}},handler(e,t){let l=e.t(t.title,{ns:"lm-flow-engine"});e.model.setProps("title",l)}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"}}}),p6.define({hide:!0,label:(0,u.tExpr)("Other columns")});let p9=new WeakMap,p7=[{value:"link",label:'{{t("Link")}}'},{value:"text",label:'{{t("Text")}}'}],me=(0,S.css)`
898
+ `,children:this.props.title})})}),t=this.render();return{...this.props,sortField:pq(this),ellipsis:!0,title:this.props.tooltip?(0,s.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,s.jsx)(g.Tooltip,{title:this.props.tooltip,children:(0,s.jsx)(e1.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({...this.props.onCell?this.props.onCell(e,t):{},record:e,recordIndex:(null==e?void 0:e.__index)||t,width:this.props.width-16,editable:this.canQuickEdit(e),dataIndex:this.props.dataIndex,title:this.props.title,overflowMode:this.props.overflowMode,model:this}),render:(e,l,o)=>(0,s.jsx)(u.FlowModelProvider,{model:this,children:(0,s.jsx)(__rspack_external_react_error_boundary_ac55bb72.ErrorBoundary,{FallbackComponent:u.FlowErrorFallback,children:(()=>{let n=this.__autoFlowError;if(n)throw n;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,s.jsx)(p1,{}):(0,s.jsx)(g.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,s.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,s.jsx)(p0,{})})()})}),hidden:this.hidden&&!this.context.flowSettingsEnabled}}onInit(e){super.onInit(e)}renderItem(){return(e,t,l)=>(0,s.jsx)(s.Fragment,{children:this.mapSubModels("field",e=>{let o=pB(t,this.context.collection.filterTargetKey),n=e.createFork({},`${(null==t?void 0:t.__index)||l}_${o}`),i=(0,u.createRecordMetaFactory)(()=>n.context.collection,n.context.t("Current record"),e=>{try{var t;let l=e.collection,o=e.record,n=null==l?void 0:l.name,i=null==l?void 0:l.dataSourceKey,r=null==l||null==(t=l.getFilterByTK)?void 0:t.call(l,o);if(!n||null==r)return;return{collection:n,dataSourceKey:i,filterByTk:r}}catch(e){return}});n.context.defineProperty("record",{get:()=>t,resolveOnServer:(0,u.createRecordResolveOnServerWithLocal)(()=>n.context.collection,()=>t),meta:i,cache:!1}),n.context.defineProperty("recordIndex",{get:()=>(null==t?void 0:t.__index)||l});let r=this.context.prefixFieldPath?this.fieldPath.replace(`${this.context.prefixFieldPath}.`,""):this.fieldPath,a=(0,c.get)(t,r);return n.setProps({value:a}),(0,s.jsx)(u.FormItem,{...(0,c.omit)(this.props,"title"),value:a,noStyle:!0,children:(0,s.jsx)(u.FieldModelRenderer,{model:n})},e.uid)})})}}p3.renderMode=u.ModelRenderMode.RenderFunction,p3.define({label:(0,u.tExpr)("Display fields"),searchable:!0,searchPlaceholder:(0,u.tExpr)("Search fields")}),p3.registerFlow({key:"tableColumnSettings",sort:500,title:(0,u.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l,o,n;let i=e.model.context.collectionField;if(!i)return;let r=pH(e.model),a=Array.isArray(e.model.subModels.field)?void 0:e.model.subModels.field,s=null==(o=i.targetCollection)||null==(l=o.getField)?void 0:l.call(o,r),d=pQ(a)?pZ({model:a,collectionField:i,titleField:r,currentProps:e.model.props}):void 0,u=i.getComponentProps(),c=i.isAssociationField()&&r?{...u,...null==s||null==(n=s.getComponentProps)?void 0:n.call(s),...d}:{...u,...d};e.model.setProps("title",i.title),e.model.setProps("dataIndex",i.name),await e.model.applySubModelsBeforeRenderFlows("field"),e.model.setProps({...c})}},title:{title:(0,u.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+n}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath})}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},aclCheck:{use:"aclCheck"},quickEdit:{title:(0,u.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},hideInSettings:e=>!!e.model.associationPathName,defaultParams:e=>e.model.collectionField.readonly||e.model.associationPathName?{editable:!1}:{editable:e.model.parent.props.editable||!1},handler(e,t){e.model.setProps("editable",!e.model.associationPathName&&t.editable)}},model:{title:(0,u.tExpr)("Field component"),use:"displayFieldComponent"},sorter:{title:(0,u.tExpr)("Sortable"),uiMode:{type:"switch",key:"sorter"},hideInSettings:async e=>{var t,l;return!e.model.collectionField.getInterfaceOptions().sortable||(null==(l=e.collectionField)||null==(t=l.isAssociationField)?void 0:t.call(l))||!!e.model.associationPathName||e.associationModel},defaultParams:{sorter:!1},handler(e,t){e.model.setProps({sorter:t.sorter})}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"},fieldNames:{use:"titleField",title:(0,u.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||t.label===l.label)return null;let n=e.collectionField.targetCollection,i=n.getField(t.label);if(!i)return null;let r=e.model.constructor.getDefaultBindingByField(e,i),a=e.model.subModels.field,s=dd(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:n.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,i):null==r?void 0:r.defaultProps,p=(null==(o=i.getComponentProps)?void 0:o.call(i))||{},m={...c||{},...p,titleField:t.label},h={...p4,...m};d&&d!==s?await du({parentModel:e.model,targetUse:d,defaultProps:m,fieldSettingsInit:u}):a&&(a.setProps(h),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}),await a.save()),d&&e.model.setStepParams("tableColumnSettings","model",{use:d}),e.model.setProps(h)},defaultParams:e=>{var t,l,o;let n=null==(o=e.model)||null==(l=o.context)||null==(t=l.collectionField)?void 0:t.targetCollectionTitleFieldName;return{label:pH(e.model)||n}},handler(e,t){if(!e.collectionField||!e.collectionField.isAssociationField())return null;e.model.setProps({titleField:t.label})}}}});class p6 extends u.FlowModel{}p6.renderMode=u.ModelRenderMode.RenderFunction,p6.registerFlow({key:"tableColumnSettings",title:(0,u.tExpr)("Table column settings"),steps:{title:{title:(0,u.tExpr)("Column title"),uiSchema:{title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,u.tExpr)("Column title")}}},defaultParams:e=>{var t,l;return{title:e.model.title||(null==(t=e.model.constructor.meta)?void 0:t.title)||(null==(l=e.model.flowEngine.findModelClass((t,l)=>l===e.model.constructor))?void 0:l[0])}},handler(e,t){let l=e.t(t.title,{ns:"lm-flow-engine"});e.model.setProps("title",l)}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"}}}),p6.define({hide:!0,label:(0,u.tExpr)("Other columns")});let p9=new WeakMap,p7=[{value:"link",label:'{{t("Link")}}'},{value:"text",label:'{{t("Text")}}'}],me=(0,S.css)`
899
899
  display: flex;
900
900
  flex-wrap: wrap;
901
901
  align-items: center;
@@ -992,7 +992,7 @@ ctx.render(\`
992
992
  &:hover td {
993
993
  background-color: #bae7ff !important;
994
994
  }
995
- `,mF=p.default.memo(e=>{let t=(0,u.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,s.jsx)(u.DndProvider,{onDragEnd:l,children:(0,s.jsx)("thead",{...e})})}),mC=e=>{let{model:t}=e;return(0,s.jsx)(u.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:[t.getModelClassName("TableColumnModel"),t.getModelClassName("TableAssociationFieldGroupModel"),t.getModelClassName("TableCustomColumnModel")].filter(Boolean),keepDropdownOpen:!0,children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:t.translate("Fields")})},"table-add-columns")};class mA extends aZ.t{get resource(){return super.resource}onMount(){super.onMount(),this.disposeAutorun=(0,u.autorun)(()=>{this.columns.value=this.getColumns()}),mp(this)}onUnmount(){super.onUnmount(),this.disposeAutorun&&this.disposeAutorun()}createResource(e,t){return this.context.createResource(u.MultiRecordResource)}highlightRow(e){e&&this.setProps("highlightedRowKey",pB(e,this.collection.filterTargetKey))}clearHighlight(){this.setProps("highlightedRowKey",null)}getColumns(){let e=this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"empty"});return this.context.flowSettingsEnabled&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,s.jsx)(mC,{model:this})}),pY(e)}isRowSelectionEnabled(){return!1!==this.props.enableRowSelection}isShowIndexEnabled(){return!1!==this.props.showIndex}getRecordIndex(e,t){let l=t,o=this.resource.getPage(),n=this.resource.getPageSize()||20;o?l=l+(o-1)*n+1:l+=1;let i=null==e?void 0:e.__index;return i?pE(i):l}getDragSortFieldName(){let e=this.props.dragSortBy;if(this.props.dragSort&&"string"==typeof e&&ma(this.collection,e))return e}getLeftAuxiliaryColumn(){let e=this.isShowIndexEnabled(),t=!!this.getDragSortFieldName();return e||t?{key:"__rowSelectionDisabledAuxiliary__",width:t?74:50,align:"center",render:(l,o,n)=>{let i=this.getRecordIndex(o,n),r=pB(o,this.collection.filterTargetKey),a=null==r?r:String(r);return(0,s.jsxs)("div",{className:(0,pR.default)(mw,{[mS]:t}),children:[t&&(0,s.jsx)(md.vm,{id:a,style:{position:"absolute",left:0,top:"50%",justifyContent:"center",transform:"translateY(-50%)"}}),e&&(0,s.jsx)(mv,{index:i,"aria-label":`table-index-${i}`})]})}}:null}renderConfigureActions(){return(0,s.jsx)(u.AddSubModelButton,{model:this,subModelBaseClass:this.getModelClassName("CollectionActionGroupModel"),subModelKey:"actions",children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:this.translate("Actions")})},"table-column-add-actions")}shouldRenderAction(e,t){return(!e.hidden||!!t)&&(!!t||!!this.isRowSelectionEnabled()||!(e instanceof sw))}pagination(){let e=this.resource.getMeta("count"),t=this.resource.getPageSize(),l=this.resource.getMeta("hasNext"),o=this.resource.getPage(),n=this.resource.getData(),i=!!this.context.isMobileLayout;if(e){let l={current:o,pageSize:t,total:e,showTotal:e=>this.translate("Total {{count}} items",{count:e}),showSizeChanger:!0};return(0,sG.hO)(l,i)}{let e=t||10,r=o||1,a={simple:!0,showTitle:!1,showSizeChanger:!0,hideOnSinglePage:!1,pageSize:e,total:(0,sG.SM)({dataLength:null==n?void 0:n.length,pageSize:e,current:r,hasNext:l}),className:(0,sG.M6)((0,sG.HZ)(),void 0),itemRender:(0,sG.hH)({current:r,controlHeight:this.context.themeToken.controlHeight})};return(0,sG.hO)(a,i)}}renderComponent(){let e=this.props.highlightedRowKey,t=!!this.context.flowSettingsEnabled,{heightMode:l,height:o}=this.decoratorProps;return this.columns.value.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.DndProvider,{children:(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:this.context.themeToken.margin,gap:this.context.themeToken.marginXXS},children:[(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"===e.props.position?(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"}},e.uid):null),(0,s.jsx)("span",{})]}),(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"!==e.props.position?(0,s.jsx)(u.Droppable,{model:e,children:(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}]})},e.uid):null),this.renderConfigureActions()]})]})}),(0,s.jsx)(mP,{model:this,size:this.props.size,virtual:this.props.virtual,dataSource:this.resource.getData(),columns:this.columns.value,pagination:this.pagination(),highlightedRowKey:e,selectedRowKeysFromResource:this.resource.getSelectedRows().map(e=>pB(e,this.collection.filterTargetKey)),defaultExpandAllRows:this.props.defaultExpandAllRows,expandedRowKeys:this.props.expandedRowKeys,heightMode:l,height:o})]}):(0,s.jsx)(g.Skeleton,{paragraph:{rows:3}})}constructor(...e){super(...e),this.rowSelectionProps=u.observable.deep({}),this._defaultCustomModelClasses={CollectionActionGroupModel:"CollectionActionGroupModel",RecordActionGroupModel:"RecordActionGroupModel",TableColumnModel:"TableColumnModel",TableAssociationFieldGroupModel:"TableAssociationFieldGroupModel",TableCustomColumnModel:"TableCustomColumnModel"},this.customModelClasses={},this.columns=u.observable.ref([]),this.EditableRow=e=>(0,s.jsx)("tr",{...e}),this.EditableCell=(0,u.observer)(e=>{let{className:t,title:l,editable:o,width:n,record:i,recordIndex:r,dataIndex:a,children:d,model:m,...h}=e,f=(0,p.useRef)(null);return o?(0,s.jsxs)("td",{ref:f,...h,className:(0,pR.default)(t,(0,S.css)`
995
+ `,mF=p.default.memo(e=>{let t=(0,u.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,s.jsx)(u.DndProvider,{onDragEnd:l,children:(0,s.jsx)("thead",{...e})})}),mC=e=>{let{model:t}=e;return(0,s.jsx)(u.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:[t.getModelClassName("TableColumnModel"),t.getModelClassName("TableAssociationFieldGroupModel"),t.getModelClassName("TableCustomColumnModel")].filter(Boolean),keepDropdownOpen:!0,children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:t.translate("Fields")})},"table-add-columns")};class mA extends aZ.t{get resource(){return super.resource}onMount(){super.onMount(),this.disposeAutorun=(0,u.autorun)(()=>{this.columns.value=this.getColumns()}),mp(this)}onUnmount(){super.onUnmount(),this.disposeAutorun&&this.disposeAutorun()}createResource(e,t){let l=this.context.createResource(u.MultiRecordResource);return l.addRequestHeader("X-With-ACL-Meta","true"),l}highlightRow(e){e&&this.setProps("highlightedRowKey",pB(e,this.collection.filterTargetKey))}clearHighlight(){this.setProps("highlightedRowKey",null)}getColumns(){let e=this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"empty"});return this.context.flowSettingsEnabled&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,s.jsx)(mC,{model:this})}),pY(e)}isRowSelectionEnabled(){return!1!==this.props.enableRowSelection}isShowIndexEnabled(){return!1!==this.props.showIndex}getRecordIndex(e,t){let l=t,o=this.resource.getPage(),n=this.resource.getPageSize()||20;o?l=l+(o-1)*n+1:l+=1;let i=null==e?void 0:e.__index;return i?pE(i):l}getDragSortFieldName(){let e=this.props.dragSortBy;if(this.props.dragSort&&"string"==typeof e&&ma(this.collection,e))return e}getLeftAuxiliaryColumn(){let e=this.isShowIndexEnabled(),t=!!this.getDragSortFieldName();return e||t?{key:"__rowSelectionDisabledAuxiliary__",width:t?74:50,align:"center",render:(l,o,n)=>{let i=this.getRecordIndex(o,n),r=pB(o,this.collection.filterTargetKey),a=null==r?r:String(r);return(0,s.jsxs)("div",{className:(0,pR.default)(mw,{[mS]:t}),children:[t&&(0,s.jsx)(md.vm,{id:a,style:{position:"absolute",left:0,top:"50%",justifyContent:"center",transform:"translateY(-50%)"}}),e&&(0,s.jsx)(mv,{index:i,"aria-label":`table-index-${i}`})]})}}:null}renderConfigureActions(){return(0,s.jsx)(u.AddSubModelButton,{model:this,subModelBaseClass:this.getModelClassName("CollectionActionGroupModel"),subModelKey:"actions",children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:this.translate("Actions")})},"table-column-add-actions")}shouldRenderAction(e,t){return(!e.hidden||!!t)&&(!!t||!!this.isRowSelectionEnabled()||!(e instanceof sw))}pagination(){let e=this.resource.getMeta("count"),t=this.resource.getPageSize(),l=this.resource.getMeta("hasNext"),o=this.resource.getPage(),n=this.resource.getData(),i=!!this.context.isMobileLayout;if(e){let l={current:o,pageSize:t,total:e,showTotal:e=>this.translate("Total {{count}} items",{count:e}),showSizeChanger:!0};return(0,sG.hO)(l,i)}{let e=t||10,r=o||1,a={simple:!0,showTitle:!1,showSizeChanger:!0,hideOnSinglePage:!1,pageSize:e,total:(0,sG.SM)({dataLength:null==n?void 0:n.length,pageSize:e,current:r,hasNext:l}),className:(0,sG.M6)((0,sG.HZ)(),void 0),itemRender:(0,sG.hH)({current:r,controlHeight:this.context.themeToken.controlHeight})};return(0,sG.hO)(a,i)}}renderComponent(){let e=this.props.highlightedRowKey,t=!!this.context.flowSettingsEnabled,{heightMode:l,height:o}=this.decoratorProps;return this.columns.value.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.DndProvider,{children:(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:this.context.themeToken.margin,gap:this.context.themeToken.marginXXS},children:[(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"===e.props.position?(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"}},e.uid):null),(0,s.jsx)("span",{})]}),(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"!==e.props.position?(0,s.jsx)(u.Droppable,{model:e,children:(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}]})},e.uid):null),this.renderConfigureActions()]})]})}),(0,s.jsx)(mP,{model:this,size:this.props.size,virtual:this.props.virtual,dataSource:this.resource.getData(),columns:this.columns.value,pagination:this.pagination(),highlightedRowKey:e,selectedRowKeysFromResource:this.resource.getSelectedRows().map(e=>pB(e,this.collection.filterTargetKey)),defaultExpandAllRows:this.props.defaultExpandAllRows,expandedRowKeys:this.props.expandedRowKeys,heightMode:l,height:o})]}):(0,s.jsx)(g.Skeleton,{paragraph:{rows:3}})}constructor(...e){super(...e),this.rowSelectionProps=u.observable.deep({}),this._defaultCustomModelClasses={CollectionActionGroupModel:"CollectionActionGroupModel",RecordActionGroupModel:"RecordActionGroupModel",TableColumnModel:"TableColumnModel",TableAssociationFieldGroupModel:"TableAssociationFieldGroupModel",TableCustomColumnModel:"TableCustomColumnModel"},this.customModelClasses={},this.columns=u.observable.ref([]),this.EditableRow=e=>(0,s.jsx)("tr",{...e}),this.EditableCell=(0,u.observer)(e=>{let{className:t,title:l,editable:o,width:n,record:i,recordIndex:r,dataIndex:a,children:d,model:m,...h}=e,f=(0,p.useRef)(null);return o?(0,s.jsxs)("td",{ref:f,...h,className:(0,pR.default)(t,(0,S.css)`
996
996
  .edit-icon {
997
997
  position: absolute;
998
998
  display: none;
package/lib/index.js CHANGED
@@ -889,13 +889,13 @@ ctx.render(\`
889
889
  </p>
890
890
  </div>
891
891
  </div>
892
- \`);`.trim()}),async handler(e,t){let{code:l,version:o}=sL(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new u.ElementProxy(t),info:{deprecated:{replacedBy:"ctx.render"}}});let n=(0,u.createSafeNavigator)();await e.runjs(l,{window:(0,u.createSafeWindow)({navigator:n}),document:(0,u.createSafeDocument)(),navigator:n},{version:o})})}}}});var pD=__nested_rspack_require_1216897__(4046);function pE(e){let t=[];return null==e||e.split(".").forEach(function(e){isNaN(e)||t.push(String(Number(e)+1))}),t.join(".")}function pY(e){let t=[],l=[],o=[];return e.forEach(e=>{"left"===e.fixed?t.push(e):"right"===e.fixed?o.push(e):l.push(e)}),[...t,...l,...o]}function pN(e,t,l){if("number"==typeof t)e[t]=l;else if("string"==typeof t){let o=t.split("."),n=e;for(let e=0;e<o.length-1;e++)n=n[o[e]];n[o[o.length-1]]=l}}function pO(e){let t=[];return e.forEach(e=>{t.push(e.id),e.children&&Array.isArray(e.children)&&(t=t.concat(pO(e.children)))}),t}function pB(e,t){return Array.isArray(t)?t.map(t=>String((null==e?void 0:e[t])??"")).join("-"):(null==e?void 0:e[t])??""}let pV=e=>{let{heightMode:t,tableAreaRef:l,deps:o=[]}=e,[n,i]=(0,p.useState)(),r=(0,p.useCallback)(()=>{if("specifyValue"!==t&&"fullHeight"!==t)return void i(e=>void 0===e?e:void 0);let e=l.current;if(!e)return;let o=e.getBoundingClientRect().height;if(!o)return;let n=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),r=e.querySelector(".ant-table-pagination"),a=Math.max(0,Math.floor(o-((null==n?void 0:n.getBoundingClientRect().height)??0)-((null==r?void 0:r.getBoundingClientRect().height)??0)));i(e=>e===a?e:a)},[t,l]);return(0,p.useLayoutEffect)(()=>{r()},[r,...o]),(0,p.useEffect)(()=>{if(!l.current||"u"<typeof ResizeObserver)return;let e=l.current,t=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),o=e.querySelector(".ant-table-pagination"),n=new ResizeObserver(()=>r());return n.observe(e),t&&n.observe(t),o&&n.observe(o),()=>n.disconnect()},[r,l,...o]),n};function pH(e){var t,l,o;return(null==(l=e.getStepParams)||null==(t=l.call(e,"tableColumnSettings","fieldNames"))?void 0:t.label)||(null==(o=e.props)?void 0:o.titleField)}function pq(e){var t,l,o,n;let i=e.fieldPath||(null==(t=e.collectionField)?void 0:t.name)||(null==(l=e.props)?void 0:l.dataIndex);if(!(null==(n=e.collectionField)||null==(o=n.isAssociationField)?void 0:o.call(n)))return i;let r=e.collectionField.name||e.fieldPath,a=pH(e)||e.collectionField.targetCollectionTitleFieldName;return r&&a?`${r}.${a}`:i}function p$(e){var t;return(null==e||null==(t=e.column)?void 0:t.sortField)||(null==e?void 0:e.field)}let pz=["dateOnly","dateFormat","format","picker","showTime","timeFormat"],pU=e=>{if(!e)return{};let t={};for(let l of pz)void 0!==e[l]&&(t[l]=e[l]);return t},pK=e=>Object.fromEntries(Object.entries(e).filter(e=>{let[,t]=e;return void 0!==t})),pG=e=>{var t;return null==e||null==(t=e.context)?void 0:t.collectionField},pW=e=>{var t,l,o,n;let i=e.collectionField||pG(e.model),r=e.titleField||(null==(l=e.model)||null==(t=l.props)?void 0:t.titleField);return(null==i||null==(n=i.targetCollection)||null==(o=n.getField)?void 0:o.call(n,r))||i},pJ=e=>(null==e?void 0:e.type)==="time"||(null==e?void 0:e.interface)==="time",pX=e=>(null==e?void 0:e.type)==="dateOnly"||(null==e?void 0:e.interface)==="dateOnly",pQ=e=>{var t,l;return(null==e||null==(t=e.getStepParams)?void 0:t.call(e,"datetimeSettings","dateFormat"))||(null==e||null==(l=e.getStepParams)?void 0:l.call(e,"timeSettings","dateFormat"))},pZ=e=>{var t,l,o;let n=e.collectionField||pG(e.model),i=pW(e),r={...pU(null==n||null==(t=n.getComponentProps)?void 0:t.call(n)),...pU(i!==n?null==i||null==(l=i.getComponentProps)?void 0:l.call(i):void 0),...pU(e.currentProps||(null==(o=e.model)?void 0:o.props)),...pU(pQ(e.model)),...pU(e.params)};if(pJ(i)){let e=r.timeFormat||r.format||"HH:mm:ss";return pK({...r,timeFormat:e,format:e})}let a=r.picker||(e.withDefaults?"date":void 0),s=r.dateFormat||(e.withDefaults?"YYYY-MM-DD":void 0),d=r.timeFormat||(e.withDefaults?"HH:mm:ss":void 0),u=!pX(i)&&r.showTime,c=s||"YYYY-MM-DD",p=d||"HH:mm:ss";return pK({...r,picker:a,dateFormat:s,timeFormat:d,showTime:u,format:u?`${c} ${p}`:c})};function p0(e){let{t}=(0,m.useTranslation)(),l=(0,u.useFlowModel)(),o=l.context.blockModel,n=(null==e?void 0:e.collection)||o.collection,i=n.dataSource,r=l.props.title||l.fieldPath,a=(0,p.useMemo)(()=>{let e=`${t(i.displayName||i.key)} > `,l=n?`${t(n.title)||n.name||n.tableName} > `:"";return`${e}${l}${r}`},[n,i.displayName,i.key,r,t]),d=t('The {{type}} "{{name}}" may have been deleted. Please remove this {{blockType}}.',{type:t("Field"),name:a,blockType:t("Field")}).replaceAll("&gt;",">");return(0,s.jsx)(g.Tooltip,{title:d,children:(0,s.jsx)(e1.ExclamationCircleOutlined,{style:{opacity:"0.3"}})})}function p1(){var e,t;let{t:l}=(0,m.useTranslation)(),o=(0,u.useFlowModel)(),n=o.context.blockModel,i=(null==(e=o.context.collectionField)?void 0:e.collection)||n.collection,r=i.dataSource,a=(null==(t=o.context.collectionField)?void 0:t.name)||o.fieldPath,d=(0,p.useMemo)(()=>{let e=`${l(r.displayName||r.key)} > `,t=i?`${l(i.title)||i.name||i.tableName} > `:"";return`${e}${t}${a}`},[i,r.displayName,r.key,a,l]),{actionName:h}=o.forbidden,f=(0,p.useMemo)(()=>l('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:l((0,c.capitalize)(h))}).replaceAll("&gt;",">"),[h,d,l]);return(0,s.jsx)(g.Tooltip,{title:f,children:(0,s.jsx)(e1.LockOutlined,{style:{opacity:"0.3"}})})}let p2=10;function p5(e){return"number"==typeof e&&e<p2?p2:e}let p8=e=>{let{setOpen:t,t:l,handleChange:o,defaultValue:n}=e,[i,r]=(0,p.useState)(n);return(0,s.jsx)("div",{onClick:e=>{e.stopPropagation(),t(!0)},onMouseLeave:()=>{t(!0)},children:(0,s.jsxs)(g.Space.Compact,{block:!0,children:[(0,s.jsx)(g.InputNumber,{placeholder:l("Custom column width"),min:p2,value:i,onChange:e=>{r(e)},style:{width:"100%",minWidth:200}}),(0,s.jsx)(g.Button,{type:"primary",onClick:()=>o(p5(i)),children:"OK"})]})})},p4={dateOnly:void 0,dateFormat:void 0,format:void 0,picker:void 0,showTime:void 0,timeFormat:void 0};class p3 extends u.DisplayItemModel{async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}renderHiddenInConfig(){return this.renderOriginal.call(this)}static defineChildren(e){let t=e.model.collection||e.collection;return t.getFields().map(l=>{var o;let n=this.getDefaultBindingByField(e,l,{fallbackToTargetTitleField:!0});if(!n||(null==(o=l.options)?void 0:o.treeChildren))return null;let i=n.modelName,r=e.fieldPath?`${e.fieldPath}.${l.name}`:l.name;return{key:r,label:l.title,refreshTargets:["TableCustomColumnModel/TableJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===r&&"TableColumnModel"===e.use},useModel:this.name,createModelOptions:()=>({use:this.name,stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:r}}},subModels:{field:{use:i,props:"function"==typeof n.defaultProps?n.defaultProps(e,l):n.defaultProps}}})}}).filter(Boolean)}getColumnProps(){if(!this.props.width)return;let e=(0,s.jsx)(u.Droppable,{model:this,children:(0,s.jsx)(u.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 7px",margin:"-11px -7px"},showBorder:!1,settingsMenuLevel:2,extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}],children:(0,s.jsx)("div",{className:(0,w.css)`
892
+ \`);`.trim()}),async handler(e,t){let{code:l,version:o}=sL(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new u.ElementProxy(t),info:{deprecated:{replacedBy:"ctx.render"}}});let n=(0,u.createSafeNavigator)();await e.runjs(l,{window:(0,u.createSafeWindow)({navigator:n}),document:(0,u.createSafeDocument)(),navigator:n},{version:o})})}}}});var pD=__nested_rspack_require_1216897__(4046);function pE(e){let t=[];return null==e||e.split(".").forEach(function(e){isNaN(e)||t.push(String(Number(e)+1))}),t.join(".")}function pY(e){let t=[],l=[],o=[];return e.forEach(e=>{"left"===e.fixed?t.push(e):"right"===e.fixed?o.push(e):l.push(e)}),[...t,...l,...o]}function pN(e,t,l){if("number"==typeof t)e[t]=l;else if("string"==typeof t){let o=t.split("."),n=e;for(let e=0;e<o.length-1;e++)n=n[o[e]];n[o[o.length-1]]=l}}function pO(e){let t=[];return e.forEach(e=>{t.push(e.id),e.children&&Array.isArray(e.children)&&(t=t.concat(pO(e.children)))}),t}function pB(e,t){return Array.isArray(t)?t.map(t=>String((null==e?void 0:e[t])??"")).join("-"):(null==e?void 0:e[t])??""}let pV=e=>{let{heightMode:t,tableAreaRef:l,deps:o=[]}=e,[n,i]=(0,p.useState)(),r=(0,p.useCallback)(()=>{if("specifyValue"!==t&&"fullHeight"!==t)return void i(e=>void 0===e?e:void 0);let e=l.current;if(!e)return;let o=e.getBoundingClientRect().height;if(!o)return;let n=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),r=e.querySelector(".ant-table-pagination"),a=Math.max(0,Math.floor(o-((null==n?void 0:n.getBoundingClientRect().height)??0)-((null==r?void 0:r.getBoundingClientRect().height)??0)));i(e=>e===a?e:a)},[t,l]);return(0,p.useLayoutEffect)(()=>{r()},[r,...o]),(0,p.useEffect)(()=>{if(!l.current||"u"<typeof ResizeObserver)return;let e=l.current,t=e.querySelector(".ant-table-header")||e.querySelector(".ant-table-thead"),o=e.querySelector(".ant-table-pagination"),n=new ResizeObserver(()=>r());return n.observe(e),t&&n.observe(t),o&&n.observe(o),()=>n.disconnect()},[r,l,...o]),n};function pH(e){var t,l,o;return(null==(l=e.getStepParams)||null==(t=l.call(e,"tableColumnSettings","fieldNames"))?void 0:t.label)||(null==(o=e.props)?void 0:o.titleField)}function pq(e){var t,l,o,n;let i=e.fieldPath||(null==(t=e.collectionField)?void 0:t.name)||(null==(l=e.props)?void 0:l.dataIndex);if(!(null==(n=e.collectionField)||null==(o=n.isAssociationField)?void 0:o.call(n)))return i;let r=e.collectionField.name||e.fieldPath,a=pH(e)||e.collectionField.targetCollectionTitleFieldName;return r&&a?`${r}.${a}`:i}function p$(e){var t;return(null==e||null==(t=e.column)?void 0:t.sortField)||(null==e?void 0:e.field)}let pz=["dateOnly","dateFormat","format","picker","showTime","timeFormat"],pU=e=>{if(!e)return{};let t={};for(let l of pz)void 0!==e[l]&&(t[l]=e[l]);return t},pK=e=>Object.fromEntries(Object.entries(e).filter(e=>{let[,t]=e;return void 0!==t})),pG=e=>{var t;return null==e||null==(t=e.context)?void 0:t.collectionField},pW=e=>{var t,l,o,n;let i=e.collectionField||pG(e.model),r=e.titleField||(null==(l=e.model)||null==(t=l.props)?void 0:t.titleField);return(null==i||null==(n=i.targetCollection)||null==(o=n.getField)?void 0:o.call(n,r))||i},pJ=e=>(null==e?void 0:e.type)==="time"||(null==e?void 0:e.interface)==="time",pX=e=>(null==e?void 0:e.type)==="dateOnly"||(null==e?void 0:e.interface)==="dateOnly",pQ=e=>{var t,l;return(null==e||null==(t=e.getStepParams)?void 0:t.call(e,"datetimeSettings","dateFormat"))||(null==e||null==(l=e.getStepParams)?void 0:l.call(e,"timeSettings","dateFormat"))},pZ=e=>{var t,l,o;let n=e.collectionField||pG(e.model),i=pW(e),r={...pU(null==n||null==(t=n.getComponentProps)?void 0:t.call(n)),...pU(i!==n?null==i||null==(l=i.getComponentProps)?void 0:l.call(i):void 0),...pU(e.currentProps||(null==(o=e.model)?void 0:o.props)),...pU(pQ(e.model)),...pU(e.params)};if(pJ(i)){let e=r.timeFormat||r.format||"HH:mm:ss";return pK({...r,timeFormat:e,format:e})}let a=r.picker||(e.withDefaults?"date":void 0),s=r.dateFormat||(e.withDefaults?"YYYY-MM-DD":void 0),d=r.timeFormat||(e.withDefaults?"HH:mm:ss":void 0),u=!pX(i)&&r.showTime,c=s||"YYYY-MM-DD",p=d||"HH:mm:ss";return pK({...r,picker:a,dateFormat:s,timeFormat:d,showTime:u,format:u?`${c} ${p}`:c})};function p0(e){let{t}=(0,m.useTranslation)(),l=(0,u.useFlowModel)(),o=l.context.blockModel,n=(null==e?void 0:e.collection)||o.collection,i=n.dataSource,r=l.props.title||l.fieldPath,a=(0,p.useMemo)(()=>{let e=`${t(i.displayName||i.key)} > `,l=n?`${t(n.title)||n.name||n.tableName} > `:"";return`${e}${l}${r}`},[n,i.displayName,i.key,r,t]),d=t('The {{type}} "{{name}}" may have been deleted. Please remove this {{blockType}}.',{type:t("Field"),name:a,blockType:t("Field")}).replaceAll("&gt;",">");return(0,s.jsx)(g.Tooltip,{title:d,children:(0,s.jsx)(e1.ExclamationCircleOutlined,{style:{opacity:"0.3"}})})}function p1(){var e,t;let{t:l}=(0,m.useTranslation)(),o=(0,u.useFlowModel)(),n=o.context.blockModel,i=(null==(e=o.context.collectionField)?void 0:e.collection)||n.collection,r=i.dataSource,a=(null==(t=o.context.collectionField)?void 0:t.name)||o.fieldPath,d=(0,p.useMemo)(()=>{let e=`${l(r.displayName||r.key)} > `,t=i?`${l(i.title)||i.name||i.tableName} > `:"";return`${e}${t}${a}`},[i,r.displayName,r.key,a,l]),{actionName:h}=o.forbidden,f=(0,p.useMemo)(()=>l('The current user only has the UI configuration permission, but don\'t have "{{actionName}}" permission for field "{{name}}"',{name:d,actionName:l((0,c.capitalize)(h))}).replaceAll("&gt;",">"),[h,d,l]);return(0,s.jsx)(g.Tooltip,{title:f,children:(0,s.jsx)(e1.LockOutlined,{style:{opacity:"0.3"}})})}let p2=10;function p5(e){return"number"==typeof e&&e<p2?p2:e}let p8=e=>{let{setOpen:t,t:l,handleChange:o,defaultValue:n}=e,[i,r]=(0,p.useState)(n);return(0,s.jsx)("div",{onClick:e=>{e.stopPropagation(),t(!0)},onMouseLeave:()=>{t(!0)},children:(0,s.jsxs)(g.Space.Compact,{block:!0,children:[(0,s.jsx)(g.InputNumber,{placeholder:l("Custom column width"),min:p2,value:i,onChange:e=>{r(e)},style:{width:"100%",minWidth:200}}),(0,s.jsx)(g.Button,{type:"primary",onClick:()=>o(p5(i)),children:"OK"})]})})},p4={dateOnly:void 0,dateFormat:void 0,format:void 0,picker:void 0,showTime:void 0,timeFormat:void 0};class p3 extends u.DisplayItemModel{async afterAddAsSubModel(){await super.afterAddAsSubModel(),await this.dispatchEvent("beforeRender")}renderHiddenInConfig(){return this.renderOriginal.call(this)}static defineChildren(e){let t=e.model.collection||e.collection;return t.getFields().map(l=>{var o;let n=this.getDefaultBindingByField(e,l,{fallbackToTargetTitleField:!0});if(!n||(null==(o=l.options)?void 0:o.treeChildren))return null;let i=n.modelName,r=e.fieldPath?`${e.fieldPath}.${l.name}`:l.name;return{key:r,label:l.title,refreshTargets:["TableCustomColumnModel/TableJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===r&&"TableColumnModel"===e.use},useModel:this.name,createModelOptions:()=>({use:this.name,stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:r}}},subModels:{field:{use:i,props:"function"==typeof n.defaultProps?n.defaultProps(e,l):n.defaultProps}}})}}).filter(Boolean)}canQuickEdit(e){if(!this.props.editable)return!1;if(this.context.skipAclCheck)return!0;let t=this.context.blockModel,l=null==t?void 0:t.collection,o=null==t?void 0:t.resource,n=this.collectionField;if(!l||!o||!n)return!1;let i=l.getFilterByTK(e),r="string"==typeof i||"number"==typeof i?i:void 0;return this.context.acl.can({dataSourceKey:l.dataSourceKey,resourceName:o.getResourceName()||l.name,actionName:"update",recordPkValue:r,allowedActions:o.getMeta("allowedActions"),fields:[n.name]})}getColumnProps(){if(!this.props.width)return;let e=(0,s.jsx)(u.Droppable,{model:this,children:(0,s.jsx)(u.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 7px",margin:"-11px -7px"},showBorder:!1,settingsMenuLevel:2,extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}],children:(0,s.jsx)("div",{className:(0,w.css)`
893
893
  overflow: hidden;
894
894
  text-overflow: ellipsis;
895
895
  white-space: nowrap;
896
896
  width: calc(${this.props.width}px - 16px);
897
897
  opacity: ${this.hidden?"0.3":"1"};
898
- `,children:this.props.title})})}),t=this.render();return{...this.props,sortField:pq(this),ellipsis:!0,title:this.props.tooltip?(0,s.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,s.jsx)(g.Tooltip,{title:this.props.tooltip,children:(0,s.jsx)(e1.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({...this.props.onCell?this.props.onCell(e,t):{},record:e,recordIndex:(null==e?void 0:e.__index)||t,width:this.props.width-16,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,overflowMode:this.props.overflowMode,model:this}),render:(e,l,o)=>(0,s.jsx)(u.FlowModelProvider,{model:this,children:(0,s.jsx)(react_error_boundary__rspack_import_37.ErrorBoundary,{FallbackComponent:u.FlowErrorFallback,children:(()=>{let n=this.__autoFlowError;if(n)throw n;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,s.jsx)(p1,{}):(0,s.jsx)(g.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,s.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,s.jsx)(p0,{})})()})}),hidden:this.hidden&&!this.context.flowSettingsEnabled}}onInit(e){super.onInit(e)}renderItem(){return(e,t,l)=>(0,s.jsx)(s.Fragment,{children:this.mapSubModels("field",e=>{let o=pB(t,this.context.collection.filterTargetKey),n=e.createFork({},`${(null==t?void 0:t.__index)||l}_${o}`),i=(0,u.createRecordMetaFactory)(()=>n.context.collection,n.context.t("Current record"),e=>{try{var t;let l=e.collection,o=e.record,n=null==l?void 0:l.name,i=null==l?void 0:l.dataSourceKey,r=null==l||null==(t=l.getFilterByTK)?void 0:t.call(l,o);if(!n||null==r)return;return{collection:n,dataSourceKey:i,filterByTk:r}}catch(e){return}});n.context.defineProperty("record",{get:()=>t,resolveOnServer:(0,u.createRecordResolveOnServerWithLocal)(()=>n.context.collection,()=>t),meta:i,cache:!1}),n.context.defineProperty("recordIndex",{get:()=>(null==t?void 0:t.__index)||l});let r=this.context.prefixFieldPath?this.fieldPath.replace(`${this.context.prefixFieldPath}.`,""):this.fieldPath,a=(0,c.get)(t,r);return n.setProps({value:a}),(0,s.jsx)(u.FormItem,{...(0,c.omit)(this.props,"title"),value:a,noStyle:!0,children:(0,s.jsx)(u.FieldModelRenderer,{model:n})},e.uid)})})}}p3.renderMode=u.ModelRenderMode.RenderFunction,p3.define({label:(0,u.tExpr)("Display fields"),searchable:!0,searchPlaceholder:(0,u.tExpr)("Search fields")}),p3.registerFlow({key:"tableColumnSettings",sort:500,title:(0,u.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l,o,n;let i=e.model.context.collectionField;if(!i)return;let r=pH(e.model),a=Array.isArray(e.model.subModels.field)?void 0:e.model.subModels.field,s=null==(o=i.targetCollection)||null==(l=o.getField)?void 0:l.call(o,r),d=pQ(a)?pZ({model:a,collectionField:i,titleField:r,currentProps:e.model.props}):void 0,u=i.getComponentProps(),c=i.isAssociationField()&&r?{...u,...null==s||null==(n=s.getComponentProps)?void 0:n.call(s),...d}:{...u,...d};e.model.setProps("title",i.title),e.model.setProps("dataIndex",i.name),await e.model.applySubModelsBeforeRenderFlows("field"),e.model.setProps({...c})}},title:{title:(0,u.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+n}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath})}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},aclCheck:{use:"aclCheck"},quickEdit:{title:(0,u.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},hideInSettings:e=>!!e.model.associationPathName,defaultParams:e=>e.model.collectionField.readonly||e.model.associationPathName?{editable:!1}:{editable:e.model.parent.props.editable||!1},handler(e,t){e.model.setProps("editable",!e.model.associationPathName&&t.editable)}},model:{title:(0,u.tExpr)("Field component"),use:"displayFieldComponent"},sorter:{title:(0,u.tExpr)("Sortable"),uiMode:{type:"switch",key:"sorter"},hideInSettings:async e=>{var t,l;return!e.model.collectionField.getInterfaceOptions().sortable||(null==(l=e.collectionField)||null==(t=l.isAssociationField)?void 0:t.call(l))||!!e.model.associationPathName||e.associationModel},defaultParams:{sorter:!1},handler(e,t){e.model.setProps({sorter:t.sorter})}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"},fieldNames:{use:"titleField",title:(0,u.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||t.label===l.label)return null;let n=e.collectionField.targetCollection,i=n.getField(t.label);if(!i)return null;let r=e.model.constructor.getDefaultBindingByField(e,i),a=e.model.subModels.field,s=dd(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:n.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,i):null==r?void 0:r.defaultProps,p=(null==(o=i.getComponentProps)?void 0:o.call(i))||{},m={...c||{},...p,titleField:t.label},h={...p4,...m};d&&d!==s?await du({parentModel:e.model,targetUse:d,defaultProps:m,fieldSettingsInit:u}):a&&(a.setProps(h),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}),await a.save()),d&&e.model.setStepParams("tableColumnSettings","model",{use:d}),e.model.setProps(h)},defaultParams:e=>{var t,l,o;let n=null==(o=e.model)||null==(l=o.context)||null==(t=l.collectionField)?void 0:t.targetCollectionTitleFieldName;return{label:pH(e.model)||n}},handler(e,t){if(!e.collectionField||!e.collectionField.isAssociationField())return null;e.model.setProps({titleField:t.label})}}}});class p6 extends u.FlowModel{}p6.renderMode=u.ModelRenderMode.RenderFunction,p6.registerFlow({key:"tableColumnSettings",title:(0,u.tExpr)("Table column settings"),steps:{title:{title:(0,u.tExpr)("Column title"),uiSchema:{title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,u.tExpr)("Column title")}}},defaultParams:e=>{var t,l;return{title:e.model.title||(null==(t=e.model.constructor.meta)?void 0:t.title)||(null==(l=e.model.flowEngine.findModelClass((t,l)=>l===e.model.constructor))?void 0:l[0])}},handler(e,t){let l=e.t(t.title,{ns:"lm-flow-engine"});e.model.setProps("title",l)}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"}}}),p6.define({hide:!0,label:(0,u.tExpr)("Other columns")});let p9=new WeakMap,p7=[{value:"link",label:'{{t("Link")}}'},{value:"text",label:'{{t("Text")}}'}],me=(0,w.css)`
898
+ `,children:this.props.title})})}),t=this.render();return{...this.props,sortField:pq(this),ellipsis:!0,title:this.props.tooltip?(0,s.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e,(0,s.jsx)(g.Tooltip,{title:this.props.tooltip,children:(0,s.jsx)(e1.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):e,onCell:(e,t)=>({...this.props.onCell?this.props.onCell(e,t):{},record:e,recordIndex:(null==e?void 0:e.__index)||t,width:this.props.width-16,editable:this.canQuickEdit(e),dataIndex:this.props.dataIndex,title:this.props.title,overflowMode:this.props.overflowMode,model:this}),render:(e,l,o)=>(0,s.jsx)(u.FlowModelProvider,{model:this,children:(0,s.jsx)(react_error_boundary__rspack_import_37.ErrorBoundary,{FallbackComponent:u.FlowErrorFallback,children:(()=>{let n=this.__autoFlowError;if(n)throw n;return this.hidden&&this.context.flowSettingsEnabled?this.forbidden?(0,s.jsx)(p1,{}):(0,s.jsx)(g.Tooltip,{title:this.context.t("The field is hidden and only visible when the UI Editor is active"),children:(0,s.jsxs)("div",{style:{opacity:"0.3"},children:[" ",t(e,l,(null==l?void 0:l.__index)||o)]})}):this.collectionField?t(e,l,(null==l?void 0:l.__index)||o):(0,s.jsx)(p0,{})})()})}),hidden:this.hidden&&!this.context.flowSettingsEnabled}}onInit(e){super.onInit(e)}renderItem(){return(e,t,l)=>(0,s.jsx)(s.Fragment,{children:this.mapSubModels("field",e=>{let o=pB(t,this.context.collection.filterTargetKey),n=e.createFork({},`${(null==t?void 0:t.__index)||l}_${o}`),i=(0,u.createRecordMetaFactory)(()=>n.context.collection,n.context.t("Current record"),e=>{try{var t;let l=e.collection,o=e.record,n=null==l?void 0:l.name,i=null==l?void 0:l.dataSourceKey,r=null==l||null==(t=l.getFilterByTK)?void 0:t.call(l,o);if(!n||null==r)return;return{collection:n,dataSourceKey:i,filterByTk:r}}catch(e){return}});n.context.defineProperty("record",{get:()=>t,resolveOnServer:(0,u.createRecordResolveOnServerWithLocal)(()=>n.context.collection,()=>t),meta:i,cache:!1}),n.context.defineProperty("recordIndex",{get:()=>(null==t?void 0:t.__index)||l});let r=this.context.prefixFieldPath?this.fieldPath.replace(`${this.context.prefixFieldPath}.`,""):this.fieldPath,a=(0,c.get)(t,r);return n.setProps({value:a}),(0,s.jsx)(u.FormItem,{...(0,c.omit)(this.props,"title"),value:a,noStyle:!0,children:(0,s.jsx)(u.FieldModelRenderer,{model:n})},e.uid)})})}}p3.renderMode=u.ModelRenderMode.RenderFunction,p3.define({label:(0,u.tExpr)("Display fields"),searchable:!0,searchPlaceholder:(0,u.tExpr)("Search fields")}),p3.registerFlow({key:"tableColumnSettings",sort:500,title:(0,u.tExpr)("Table column settings"),steps:{init:{async handler(e,t){var l,o,n;let i=e.model.context.collectionField;if(!i)return;let r=pH(e.model),a=Array.isArray(e.model.subModels.field)?void 0:e.model.subModels.field,s=null==(o=i.targetCollection)||null==(l=o.getField)?void 0:l.call(o,r),d=pQ(a)?pZ({model:a,collectionField:i,titleField:r,currentProps:e.model.props}):void 0,u=i.getComponentProps(),c=i.isAssociationField()&&r?{...u,...null==s||null==(n=s.getComponentProps)?void 0:n.call(s),...d}:{...u,...d};e.model.setProps("title",i.title),e.model.setProps("dataIndex",i.name),await e.model.applySubModelsBeforeRenderFlows("field"),e.model.setProps({...c})}},title:{title:(0,u.tExpr)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+n}}}}),defaultParams:e=>{var t;return{title:null==(t=e.model.collectionField)?void 0:t.title}},handler(e,t){var l;let o={ns:"lm-flow-engine",compareWith:null==(l=e.model.collectionField)?void 0:l.title};e.model.setProps({title:e.t(t.title,o)||e.fieldPath})}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},aclCheck:{use:"aclCheck"},quickEdit:{title:(0,u.tExpr)("Enable quick edit"),uiMode:{type:"switch",key:"editable"},hideInSettings:e=>!!e.model.associationPathName,defaultParams:e=>e.model.collectionField.readonly||e.model.associationPathName?{editable:!1}:{editable:e.model.parent.props.editable||!1},handler(e,t){e.model.setProps("editable",!e.model.associationPathName&&t.editable)}},model:{title:(0,u.tExpr)("Field component"),use:"displayFieldComponent"},sorter:{title:(0,u.tExpr)("Sortable"),uiMode:{type:"switch",key:"sorter"},hideInSettings:async e=>{var t,l;return!e.model.collectionField.getInterfaceOptions().sortable||(null==(l=e.collectionField)||null==(t=l.isAssociationField)?void 0:t.call(l))||!!e.model.associationPathName||e.associationModel},defaultParams:{sorter:!1},handler(e,t){e.model.setProps({sorter:t.sorter})}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"},fieldNames:{use:"titleField",title:(0,u.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{var o;if(!e.collectionField||!e.collectionField.isAssociationField()||t.label===l.label)return null;let n=e.collectionField.targetCollection,i=n.getField(t.label);if(!i)return null;let r=e.model.constructor.getDefaultBindingByField(e,i),a=e.model.subModels.field,s=dd(a)||(null==a?void 0:a.use),d=(null==r?void 0:r.modelName)||s,u={dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:n.name,fieldPath:t.label},c="function"==typeof(null==r?void 0:r.defaultProps)?r.defaultProps(e,i):null==r?void 0:r.defaultProps,p=(null==(o=i.getComponentProps)?void 0:o.call(i))||{},m={...c||{},...p,titleField:t.label},h={...p4,...m};d&&d!==s?await du({parentModel:e.model,targetUse:d,defaultProps:m,fieldSettingsInit:u}):a&&(a.setProps(h),a.setStepParams("fieldSettings","init",u),await a.dispatchEvent("beforeRender",void 0,{useCache:!1}),await a.save()),d&&e.model.setStepParams("tableColumnSettings","model",{use:d}),e.model.setProps(h)},defaultParams:e=>{var t,l,o;let n=null==(o=e.model)||null==(l=o.context)||null==(t=l.collectionField)?void 0:t.targetCollectionTitleFieldName;return{label:pH(e.model)||n}},handler(e,t){if(!e.collectionField||!e.collectionField.isAssociationField())return null;e.model.setProps({titleField:t.label})}}}});class p6 extends u.FlowModel{}p6.renderMode=u.ModelRenderMode.RenderFunction,p6.registerFlow({key:"tableColumnSettings",title:(0,u.tExpr)("Table column settings"),steps:{title:{title:(0,u.tExpr)("Column title"),uiSchema:{title:{"x-component":"Input","x-decorator":"FormItem","x-component-props":{placeholder:(0,u.tExpr)("Column title")}}},defaultParams:e=>{var t,l;return{title:e.model.title||(null==(t=e.model.constructor.meta)?void 0:t.title)||(null==(l=e.model.flowEngine.findModelClass((t,l)=>l===e.model.constructor))?void 0:l[0])}},handler(e,t){let l=e.t(t.title,{ns:"lm-flow-engine"});e.model.setProps("title",l)}},tooltip:{title:(0,u.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",e.t(t.tooltip,{ns:"lm-flow-engine"}))}},width:{title:(0,u.tExpr)("Column width"),uiMode(e){let t=e.model.props.width;return{type:"select",key:"width",props:{options:[{label:50,value:50},{label:100,value:100},{label:150,value:150},{label:200,value:200},{label:250,value:250},{label:300,value:300},{label:350,value:350},{label:400,value:400},{label:450,value:450},{label:500,value:500}],dropdownRender:(l,o,n)=>(0,s.jsxs)(s.Fragment,{children:[l,(0,s.jsx)(g.Divider,{style:{margin:"4px 0"}}),(0,s.jsx)(p8,{setOpen:o,handleChange:n,t:e.t,defaultValue:[50,100,150,200,250,300,350,400,450,500].includes(t)?null:t})]})}}},defaultParams:{width:150},handler(e,t){e.model.setProps("width",p5(t.width))}},fixed:{title:(0,u.tExpr)("Fixed"),use:"fixed"}}}),p6.define({hide:!0,label:(0,u.tExpr)("Other columns")});let p9=new WeakMap,p7=[{value:"link",label:'{{t("Link")}}'},{value:"text",label:'{{t("Text")}}'}],me=(0,w.css)`
899
899
  display: flex;
900
900
  flex-wrap: wrap;
901
901
  align-items: center;
@@ -992,7 +992,7 @@ ctx.render(\`
992
992
  &:hover td {
993
993
  background-color: #bae7ff !important;
994
994
  }
995
- `,mk=p.default.memo(e=>{let t=(0,u.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,s.jsx)(u.DndProvider,{onDragEnd:l,children:(0,s.jsx)("thead",{...e})})}),mC=e=>{let{model:t}=e;return(0,s.jsx)(u.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:[t.getModelClassName("TableColumnModel"),t.getModelClassName("TableAssociationFieldGroupModel"),t.getModelClassName("TableCustomColumnModel")].filter(Boolean),keepDropdownOpen:!0,children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:t.translate("Fields")})},"table-add-columns")};class mA extends aZ.t{get resource(){return super.resource}onMount(){super.onMount(),this.disposeAutorun=(0,u.autorun)(()=>{this.columns.value=this.getColumns()}),mp(this)}onUnmount(){super.onUnmount(),this.disposeAutorun&&this.disposeAutorun()}createResource(e,t){return this.context.createResource(u.MultiRecordResource)}highlightRow(e){e&&this.setProps("highlightedRowKey",pB(e,this.collection.filterTargetKey))}clearHighlight(){this.setProps("highlightedRowKey",null)}getColumns(){let e=this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"empty"});return this.context.flowSettingsEnabled&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,s.jsx)(mC,{model:this})}),pY(e)}isRowSelectionEnabled(){return!1!==this.props.enableRowSelection}isShowIndexEnabled(){return!1!==this.props.showIndex}getRecordIndex(e,t){let l=t,o=this.resource.getPage(),n=this.resource.getPageSize()||20;o?l=l+(o-1)*n+1:l+=1;let i=null==e?void 0:e.__index;return i?pE(i):l}getDragSortFieldName(){let e=this.props.dragSortBy;if(this.props.dragSort&&"string"==typeof e&&ma(this.collection,e))return e}getLeftAuxiliaryColumn(){let e=this.isShowIndexEnabled(),t=!!this.getDragSortFieldName();return e||t?{key:"__rowSelectionDisabledAuxiliary__",width:t?74:50,align:"center",render:(l,o,n)=>{let i=this.getRecordIndex(o,n),r=pB(o,this.collection.filterTargetKey),a=null==r?r:String(r);return(0,s.jsxs)("div",{className:(0,pD.default)(mS,{[mw]:t}),children:[t&&(0,s.jsx)(md.vm,{id:a,style:{position:"absolute",left:0,top:"50%",justifyContent:"center",transform:"translateY(-50%)"}}),e&&(0,s.jsx)(mv,{index:i,"aria-label":`table-index-${i}`})]})}}:null}renderConfigureActions(){return(0,s.jsx)(u.AddSubModelButton,{model:this,subModelBaseClass:this.getModelClassName("CollectionActionGroupModel"),subModelKey:"actions",children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:this.translate("Actions")})},"table-column-add-actions")}shouldRenderAction(e,t){return(!e.hidden||!!t)&&(!!t||!!this.isRowSelectionEnabled()||!(e instanceof sS))}pagination(){let e=this.resource.getMeta("count"),t=this.resource.getPageSize(),l=this.resource.getMeta("hasNext"),o=this.resource.getPage(),n=this.resource.getData(),i=!!this.context.isMobileLayout;if(e){let l={current:o,pageSize:t,total:e,showTotal:e=>this.translate("Total {{count}} items",{count:e}),showSizeChanger:!0};return(0,sG.hO)(l,i)}{let e=t||10,r=o||1,a={simple:!0,showTitle:!1,showSizeChanger:!0,hideOnSinglePage:!1,pageSize:e,total:(0,sG.SM)({dataLength:null==n?void 0:n.length,pageSize:e,current:r,hasNext:l}),className:(0,sG.M6)((0,sG.HZ)(),void 0),itemRender:(0,sG.hH)({current:r,controlHeight:this.context.themeToken.controlHeight})};return(0,sG.hO)(a,i)}}renderComponent(){let e=this.props.highlightedRowKey,t=!!this.context.flowSettingsEnabled,{heightMode:l,height:o}=this.decoratorProps;return this.columns.value.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.DndProvider,{children:(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:this.context.themeToken.margin,gap:this.context.themeToken.marginXXS},children:[(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"===e.props.position?(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"}},e.uid):null),(0,s.jsx)("span",{})]}),(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"!==e.props.position?(0,s.jsx)(u.Droppable,{model:e,children:(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}]})},e.uid):null),this.renderConfigureActions()]})]})}),(0,s.jsx)(mP,{model:this,size:this.props.size,virtual:this.props.virtual,dataSource:this.resource.getData(),columns:this.columns.value,pagination:this.pagination(),highlightedRowKey:e,selectedRowKeysFromResource:this.resource.getSelectedRows().map(e=>pB(e,this.collection.filterTargetKey)),defaultExpandAllRows:this.props.defaultExpandAllRows,expandedRowKeys:this.props.expandedRowKeys,heightMode:l,height:o})]}):(0,s.jsx)(g.Skeleton,{paragraph:{rows:3}})}constructor(...e){super(...e),this.rowSelectionProps=u.observable.deep({}),this._defaultCustomModelClasses={CollectionActionGroupModel:"CollectionActionGroupModel",RecordActionGroupModel:"RecordActionGroupModel",TableColumnModel:"TableColumnModel",TableAssociationFieldGroupModel:"TableAssociationFieldGroupModel",TableCustomColumnModel:"TableCustomColumnModel"},this.customModelClasses={},this.columns=u.observable.ref([]),this.EditableRow=e=>(0,s.jsx)("tr",{...e}),this.EditableCell=(0,u.observer)(e=>{let{className:t,title:l,editable:o,width:n,record:i,recordIndex:r,dataIndex:a,children:d,model:m,...h}=e,f=(0,p.useRef)(null);return o?(0,s.jsxs)("td",{ref:f,...h,className:(0,pD.default)(t,(0,w.css)`
995
+ `,mk=p.default.memo(e=>{let t=(0,u.useFlowEngine)(),l=e=>{let{active:l,over:o}=e;l.id&&(null==o?void 0:o.id)&&l.id!==o.id&&t.moveModel(l.id,o.id)};return(0,s.jsx)(u.DndProvider,{onDragEnd:l,children:(0,s.jsx)("thead",{...e})})}),mC=e=>{let{model:t}=e;return(0,s.jsx)(u.AddSubModelButton,{model:t,subModelKey:"columns",subModelBaseClasses:[t.getModelClassName("TableColumnModel"),t.getModelClassName("TableAssociationFieldGroupModel"),t.getModelClassName("TableCustomColumnModel")].filter(Boolean),keepDropdownOpen:!0,children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:t.translate("Fields")})},"table-add-columns")};class mA extends aZ.t{get resource(){return super.resource}onMount(){super.onMount(),this.disposeAutorun=(0,u.autorun)(()=>{this.columns.value=this.getColumns()}),mp(this)}onUnmount(){super.onUnmount(),this.disposeAutorun&&this.disposeAutorun()}createResource(e,t){let l=this.context.createResource(u.MultiRecordResource);return l.addRequestHeader("X-With-ACL-Meta","true"),l}highlightRow(e){e&&this.setProps("highlightedRowKey",pB(e,this.collection.filterTargetKey))}clearHighlight(){this.setProps("highlightedRowKey",null)}getColumns(){let e=this.mapSubModels("columns",e=>e.getColumnProps()).filter(Boolean).concat({key:"empty"});return this.context.flowSettingsEnabled&&e.push({key:"addColumn",fixed:"right",width:100,title:(0,s.jsx)(mC,{model:this})}),pY(e)}isRowSelectionEnabled(){return!1!==this.props.enableRowSelection}isShowIndexEnabled(){return!1!==this.props.showIndex}getRecordIndex(e,t){let l=t,o=this.resource.getPage(),n=this.resource.getPageSize()||20;o?l=l+(o-1)*n+1:l+=1;let i=null==e?void 0:e.__index;return i?pE(i):l}getDragSortFieldName(){let e=this.props.dragSortBy;if(this.props.dragSort&&"string"==typeof e&&ma(this.collection,e))return e}getLeftAuxiliaryColumn(){let e=this.isShowIndexEnabled(),t=!!this.getDragSortFieldName();return e||t?{key:"__rowSelectionDisabledAuxiliary__",width:t?74:50,align:"center",render:(l,o,n)=>{let i=this.getRecordIndex(o,n),r=pB(o,this.collection.filterTargetKey),a=null==r?r:String(r);return(0,s.jsxs)("div",{className:(0,pD.default)(mS,{[mw]:t}),children:[t&&(0,s.jsx)(md.vm,{id:a,style:{position:"absolute",left:0,top:"50%",justifyContent:"center",transform:"translateY(-50%)"}}),e&&(0,s.jsx)(mv,{index:i,"aria-label":`table-index-${i}`})]})}}:null}renderConfigureActions(){return(0,s.jsx)(u.AddSubModelButton,{model:this,subModelBaseClass:this.getModelClassName("CollectionActionGroupModel"),subModelKey:"actions",children:(0,s.jsx)(u.FlowSettingsButton,{icon:(0,s.jsx)(e1.SettingOutlined,{}),children:this.translate("Actions")})},"table-column-add-actions")}shouldRenderAction(e,t){return(!e.hidden||!!t)&&(!!t||!!this.isRowSelectionEnabled()||!(e instanceof sS))}pagination(){let e=this.resource.getMeta("count"),t=this.resource.getPageSize(),l=this.resource.getMeta("hasNext"),o=this.resource.getPage(),n=this.resource.getData(),i=!!this.context.isMobileLayout;if(e){let l={current:o,pageSize:t,total:e,showTotal:e=>this.translate("Total {{count}} items",{count:e}),showSizeChanger:!0};return(0,sG.hO)(l,i)}{let e=t||10,r=o||1,a={simple:!0,showTitle:!1,showSizeChanger:!0,hideOnSinglePage:!1,pageSize:e,total:(0,sG.SM)({dataLength:null==n?void 0:n.length,pageSize:e,current:r,hasNext:l}),className:(0,sG.M6)((0,sG.HZ)(),void 0),itemRender:(0,sG.hH)({current:r,controlHeight:this.context.themeToken.controlHeight})};return(0,sG.hO)(a,i)}}renderComponent(){let e=this.props.highlightedRowKey,t=!!this.context.flowSettingsEnabled,{heightMode:l,height:o}=this.decoratorProps;return this.columns.value.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.DndProvider,{children:(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:this.context.themeToken.margin,gap:this.context.themeToken.marginXXS},children:[(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"===e.props.position?(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"}},e.uid):null),(0,s.jsx)("span",{})]}),(0,s.jsxs)(g.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>this.shouldRenderAction(e,t)&&"left"!==e.props.position?(0,s.jsx)(u.Droppable,{model:e,children:(0,s.jsx)(u.FlowModelRenderer,{model:e,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:u.DragHandler,sort:1}]})},e.uid):null),this.renderConfigureActions()]})]})}),(0,s.jsx)(mP,{model:this,size:this.props.size,virtual:this.props.virtual,dataSource:this.resource.getData(),columns:this.columns.value,pagination:this.pagination(),highlightedRowKey:e,selectedRowKeysFromResource:this.resource.getSelectedRows().map(e=>pB(e,this.collection.filterTargetKey)),defaultExpandAllRows:this.props.defaultExpandAllRows,expandedRowKeys:this.props.expandedRowKeys,heightMode:l,height:o})]}):(0,s.jsx)(g.Skeleton,{paragraph:{rows:3}})}constructor(...e){super(...e),this.rowSelectionProps=u.observable.deep({}),this._defaultCustomModelClasses={CollectionActionGroupModel:"CollectionActionGroupModel",RecordActionGroupModel:"RecordActionGroupModel",TableColumnModel:"TableColumnModel",TableAssociationFieldGroupModel:"TableAssociationFieldGroupModel",TableCustomColumnModel:"TableCustomColumnModel"},this.customModelClasses={},this.columns=u.observable.ref([]),this.EditableRow=e=>(0,s.jsx)("tr",{...e}),this.EditableCell=(0,u.observer)(e=>{let{className:t,title:l,editable:o,width:n,record:i,recordIndex:r,dataIndex:a,children:d,model:m,...h}=e,f=(0,p.useRef)(null);return o?(0,s.jsxs)("td",{ref:f,...h,className:(0,pD.default)(t,(0,w.css)`
996
996
  .edit-icon {
997
997
  position: absolute;
998
998
  display: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/client-v2",
3
- "version": "2.1.30",
3
+ "version": "2.1.31",
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.1.30",
31
- "@nocobase/flow-engine": "2.1.30",
32
- "@nocobase/sdk": "2.1.30",
33
- "@nocobase/shared": "2.1.30",
34
- "@nocobase/utils": "2.1.30",
30
+ "@nocobase/evaluators": "2.1.31",
31
+ "@nocobase/flow-engine": "2.1.31",
32
+ "@nocobase/sdk": "2.1.31",
33
+ "@nocobase/shared": "2.1.31",
34
+ "@nocobase/utils": "2.1.31",
35
35
  "ahooks": "^3.7.2",
36
36
  "antd": "5.24.2",
37
37
  "antd-style": "3.7.1",
@@ -48,5 +48,5 @@
48
48
  "react-i18next": "^11.15.1",
49
49
  "react-router-dom": "^6.30.1"
50
50
  },
51
- "gitHead": "c1a4bff0fd3c8b30e06fc6f50ad33e054b04061a"
51
+ "gitHead": "b5d46b76adb72b4fa736dd0e6c89d8a0bc83bfe8"
52
52
  }
@@ -234,7 +234,9 @@ export class TableBlockModel extends CollectionBlockModel<TableBlockModelStructu
234
234
  }
235
235
 
236
236
  createResource(ctx, params) {
237
- return this.context.createResource(MultiRecordResource);
237
+ const resource = this.context.createResource(MultiRecordResource);
238
+ resource.addRequestHeader('X-With-ACL-Meta', 'true');
239
+ return resource;
238
240
  }
239
241
 
240
242
  /**
@@ -194,6 +194,35 @@ export class TableColumnModel extends DisplayItemModel {
194
194
  .filter(Boolean);
195
195
  }
196
196
 
197
+ canQuickEdit(record: Record<string, unknown>): boolean {
198
+ if (!this.props.editable) {
199
+ return false;
200
+ }
201
+ if (this.context.skipAclCheck) {
202
+ return true;
203
+ }
204
+
205
+ const blockModel = this.context.blockModel;
206
+ const collection = blockModel?.collection;
207
+ const resource = blockModel?.resource;
208
+ const collectionField = this.collectionField;
209
+ if (!collection || !resource || !collectionField) {
210
+ return false;
211
+ }
212
+
213
+ const filterByTk = collection.getFilterByTK(record);
214
+ const recordPkValue = typeof filterByTk === 'string' || typeof filterByTk === 'number' ? filterByTk : undefined;
215
+
216
+ return this.context.acl.can({
217
+ dataSourceKey: collection.dataSourceKey,
218
+ resourceName: resource.getResourceName() || collection.name,
219
+ actionName: 'update',
220
+ recordPkValue,
221
+ allowedActions: resource.getMeta('allowedActions'),
222
+ fields: [collectionField.name],
223
+ });
224
+ }
225
+
197
226
  getColumnProps(): TableColumnProps & { sortField?: string } {
198
227
  if (!this.props.width) {
199
228
  return;
@@ -250,7 +279,7 @@ export class TableColumnModel extends DisplayItemModel {
250
279
  record,
251
280
  recordIndex: record?.__index || recordIndex,
252
281
  width: this.props.width - 16,
253
- editable: this.props.editable,
282
+ editable: this.canQuickEdit(record),
254
283
  dataIndex: this.props.dataIndex,
255
284
  title: this.props.title,
256
285
  overflowMode: this.props.overflowMode,
@@ -9,8 +9,20 @@
9
9
 
10
10
  import { FlowEngine, MultiRecordResource } from '@nocobase/flow-engine';
11
11
  import { describe, expect, it } from 'vitest';
12
+ import { TableBlockModel } from '../TableBlockModel';
12
13
 
13
14
  describe('TableBlockModel quick edit refresh', () => {
15
+ it('requests record-level ACL metadata for table data', () => {
16
+ const engine = new FlowEngine();
17
+ const model = {
18
+ context: engine.context,
19
+ };
20
+
21
+ const resource = TableBlockModel.prototype.createResource.call(model, {}, {});
22
+
23
+ expect(resource.getRequestOptions().headers['X-With-ACL-Meta']).toBe('true');
24
+ });
25
+
14
26
  it('updates table data through a new array reference after quick editing a flat row', () => {
15
27
  const engine = new FlowEngine();
16
28
  const resource = engine.context.createResource(MultiRecordResource);
@@ -66,6 +66,39 @@ describe('TableColumnModel sorter settings', () => {
66
66
  expect(setProps).toHaveBeenCalledWith('editable', false);
67
67
  });
68
68
 
69
+ it('checks record update scope and field permission before enabling quick edit', () => {
70
+ const can = vi.fn(() => false);
71
+ const model = {
72
+ props: { editable: true },
73
+ collectionField: { name: 'title' },
74
+ context: {
75
+ skipAclCheck: false,
76
+ acl: { can },
77
+ blockModel: {
78
+ collection: {
79
+ dataSourceKey: 'main',
80
+ name: 'posts',
81
+ getFilterByTK: () => 2,
82
+ },
83
+ resource: {
84
+ getResourceName: () => 'posts',
85
+ getMeta: () => ({ update: [1] }),
86
+ },
87
+ },
88
+ },
89
+ };
90
+
91
+ expect(TableColumnModel.prototype.canQuickEdit.call(model, { id: 2 })).toBe(false);
92
+ expect(can).toHaveBeenCalledWith({
93
+ dataSourceKey: 'main',
94
+ resourceName: 'posts',
95
+ actionName: 'update',
96
+ recordPkValue: 2,
97
+ allowedActions: { update: [1] },
98
+ fields: ['title'],
99
+ });
100
+ });
101
+
69
102
  it('hides sortable setting for association fields', async () => {
70
103
  const engine = new FlowEngine();
71
104
  const model = new TableColumnModel({ uid: 'table-column-association-sorter', flowEngine: engine } as any);