@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.
- package/es/flow/models/blocks/table/TableColumnModel.d.ts +1 -0
- package/es/index.mjs +3 -3
- package/lib/index.js +3 -3
- package/package.json +7 -7
- package/src/flow/models/blocks/table/TableBlockModel.tsx +3 -1
- package/src/flow/models/blocks/table/TableColumnModel.tsx +30 -1
- package/src/flow/models/blocks/table/__tests__/TableBlockModel.quickEditRefresh.test.ts +12 -0
- package/src/flow/models/blocks/table/__tests__/TableColumnModel.test.tsx +33 -0
|
@@ -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(">",">");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(">",">"),[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(">",">");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(">",">"),[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.
|
|
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){
|
|
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(">",">");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(">",">"),[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(">",">");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(">",">"),[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.
|
|
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){
|
|
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.
|
|
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.
|
|
31
|
-
"@nocobase/flow-engine": "2.1.
|
|
32
|
-
"@nocobase/sdk": "2.1.
|
|
33
|
-
"@nocobase/shared": "2.1.
|
|
34
|
-
"@nocobase/utils": "2.1.
|
|
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": "
|
|
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
|
-
|
|
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.
|
|
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);
|