cnhis-design-vue 3.1.51-beta.8 → 3.1.51-beta.9

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.
@@ -1 +1 @@
1
- import{reactive as e}from"vue";const n=e(new Map);function t(e,t,i,l){if(!e||!i||!l)return[];const{tableColumn:o}=l.reactData,r=o.find((e=>{var n,t;const l=null==(t=(null==(n=e.editRender)?void 0:n.props).connectField)?void 0:t.split(",");return null==l?void 0:l.includes(i)}));return r&&t[r.field]?n.get(e)[`${i}__${r.field}-${t[r.field]}`]:n.get(e)[i]}export{t as getSelectOptions,n as selectOptionsMap};
1
+ import{reactive as e}from"vue";const n=e(new Map);function t(e,t,i,l){if(!e||!i||!l)return[];const{tableColumn:o}=l.reactData,r=o.find((e=>{var n,t;const l=null==(t=(null==(n=e.editRender)?void 0:n.props).connectField||"")?void 0:t.split(",");return null==l?void 0:l.includes(i)}));return r&&t[r.field]?n.get(e)[`${i}__${r.field}-${t[r.field]}`]:n.get(e)[i]}export{t as getSelectOptions,n as selectOptionsMap};
@@ -1 +1 @@
1
- import{defineComponent as e,inject as l,ref as t,computed as o,createVNode as n,toRaw as a,Fragment as u,createTextVNode as i}from"vue";import{keywordMatcher as r,arrayed as d}from"../../../../../../../shared/utils/index.js";import{NSelect as s,NTooltip as p,NIcon as c,NTag as v,NButton as f}from"naive-ui";import{HelpCircleSharp as m}from"@vicons/ionicons5";import{InjectionIhoTableUUID as y}from"../../../../constants/index.js";import{getSelectOptions as h,selectOptionsMap as b}from"../hooks/useSelectOption.js";import{useIhoTableFormEvent as w}from"../../../../utils/index.js";import{useDebounceFn as F}from"@vueuse/core";import{isEmpty as g,isFunction as S,isArray as O,isObject as q,omit as x,cloneDeep as C}from"lodash-es";var $=e({name:"EditSelect",props:{value:{type:[Array,String,Number]},column:{type:Object,required:!0},row:{type:Object,required:!0},rowIndex:{type:Number,required:!0},options:{type:Array,default:()=>[]},queryOptions:{type:Function},placeholder:{type:String,default:"请选择"},allowCreate:{type:Boolean,default:!1},shouldSave:{type:Boolean,default:!1},consistentMenuWidth:{type:Boolean,default:!0},labelField:{type:String,default:"label"},valueField:{type:String,default:"value"},aliasField:{type:String},menuProps:{type:Object},multiple:{type:Boolean,default:!1},deletable:{type:Boolean,default:!0},selectAll:{type:Boolean,default:!0}},emits:["update:value"],setup(e,{emit:$}){const _=l("$xetable"),j=t(null);function k(e){j.value=e}const P=t(!1),{emitFormChangeWithParams:B}=w({...e,$table:_}),W=t("");function A(){return I()}const D=t([]),E=o((()=>{let l=g(D.value)?e.options:D.value;return W.value?(l=l.filter((l=>l[e.labelField]&&l[e.labelField].includes(W.value)||r(W.value,l.keyword))),!e.allowCreate||l.some((l=>l[e.labelField]===W.value))?l:[...l,{[e.labelField]:W.value,[e.valueField]:W.value,created:!0,shouldSave:e.shouldSave}]):l})),M=t(!1),I=F((async function(l=""){W.value=l;try{if(M.value=!0,!S(e.queryOptions)||!g(e.options))return;D.value=await e.queryOptions({keyword:l,row:e.row,column:e.column,rowIndex:e.rowIndex})}catch(l){console.log(`获取${e.column.field}options错误`)}finally{M.value=!1}}),400),U=l(y);function V(l,t){var o,n;const u=e.value;$("update:value",l);const i=h(U,e.row,e.column.field,_);U&&O(i)&&d(t).forEach((e=>{if(!q(e))return;const l=e;l.created&&l.shouldSave&&i.push(x(a(l),["created","shouldSave"]))}));const r=null==(n=(null==(o=e.column.editRender)?void 0:o.props).connectField)?void 0:n.split(",");if(U&&r){const l=b.get(U);r.forEach((async t=>{var o;const{tableColumn:n}=_.reactData,a=n.find((e=>e.field===t)),u=null==(o=null==a?void 0:a.editRender)?void 0:o.props;if(null==u?void 0:u.queryOptions){const o=`${t}__${e.column.field}-${e.row[e.column.field]}`,n=await u.queryOptions({row:e.row,column:a,isFullData:!0});l[o]=n}}))}B({oldValue:u,option:C(t)})}function z(e){var l,t;"Tab"===e.key&&j.value&&(null==(t=(l=j.value).handleKeydown)||t.call(l,{...e,key:"Enter",preventDefault:e.preventDefault.bind(e)}))}function K(l){const t=l?E.value.map((l=>l[e.valueField])):[],o=e.value,n=O(o)?o.length:0;t.length!==n&&($("update:value",t),B({oldValue:o,option:l?C(E.value):[]}))}function N({node:e,option:l}){return l.desc?n("div",{class:"iho-table__selectOptionWrapper"},[[e,n(p,null,{trigger:()=>n(c,{component:m},null),default:()=>l.desc})]]):e}function R({option:l,handleClose:t}){var o;const a=null!=(o=e.aliasField&&l[e.aliasField])?o:l[e.labelField];return O(e.value)?e.deletable?n(v,{closable:!0,onClose:e=>{e.stopPropagation(),t()}},{default:()=>a}):`${a} ;`:n(u,null,[a])}function T(){return n(u,null,[n(f,{quaternary:!0,type:"primary",size:"tiny",onClick:()=>K(!0)},{default:()=>[i("全选")]}),n(f,{quaternary:!0,type:"primary",size:"tiny",onClick:()=>K(!1)},{default:()=>[i("清空")]})])}const G=()=>({class:"iho-table__selectOption"}),H=o((()=>{var l,t;return{...e.menuProps,class:`iho-table__selectMenu ${null!=(t=null==(l=e.menuProps)?void 0:l.class)?t:""}`}}));return()=>{const l={};return e.multiple&&e.selectAll&&(l.action=T),n(s,{ref:k,show:P.value,"onUpdate:show":e=>P.value=e,consistentMenuWidth:e.consistentMenuWidth,placeholder:e.placeholder,labelField:e.labelField,valueField:e.valueField,loading:M.value,options:E.value,multiple:e.multiple,value:e.value,remote:!0,onSearch:I,clearable:!0,filterable:!0,nodeProps:G,menuProps:H.value,renderTag:R,renderOption:N,onUpdateShow:A,onUpdateValue:V,onKeydown:z},l)}}});export{$ as default};
1
+ import{defineComponent as e,inject as l,ref as t,computed as o,createVNode as n,toRaw as a,Fragment as u,createTextVNode as i}from"vue";import{keywordMatcher as r,arrayed as d}from"../../../../../../../shared/utils/index.js";import{NSelect as s,NTooltip as p,NIcon as c,NTag as v,NButton as f}from"naive-ui";import{HelpCircleSharp as m}from"@vicons/ionicons5";import{InjectionIhoTableUUID as y}from"../../../../constants/index.js";import{getSelectOptions as h,selectOptionsMap as b}from"../hooks/useSelectOption.js";import{useIhoTableFormEvent as F}from"../../../../utils/index.js";import{useDebounceFn as w}from"@vueuse/core";import{isEmpty as g,isFunction as S,isArray as O,isObject as q,omit as x,cloneDeep as C}from"lodash-es";var $=e({name:"EditSelect",props:{value:{type:[Array,String,Number]},column:{type:Object,required:!0},row:{type:Object,required:!0},rowIndex:{type:Number,required:!0},options:{type:Array,default:()=>[]},queryOptions:{type:Function},placeholder:{type:String,default:"请选择"},allowCreate:{type:Boolean,default:!1},shouldSave:{type:Boolean,default:!1},consistentMenuWidth:{type:Boolean,default:!0},labelField:{type:String,default:"label"},valueField:{type:String,default:"value"},aliasField:{type:String},menuProps:{type:Object},multiple:{type:Boolean,default:!1},deletable:{type:Boolean,default:!0},selectAll:{type:Boolean,default:!0}},emits:["update:value"],setup(e,{emit:$}){const _=l("$xetable"),j=t(null);function k(e){j.value=e}const P=t(!1),{emitFormChangeWithParams:B}=F({...e,$table:_}),W=t("");function A(){return I()}const D=t([]),E=o((()=>{let l=g(D.value)?e.options:D.value;return W.value?(l=l.filter((l=>l[e.labelField]&&l[e.labelField].includes(W.value)||r(W.value,l.keyword))),!e.allowCreate||l.some((l=>l[e.labelField]===W.value))?l:[...l,{[e.labelField]:W.value,[e.valueField]:W.value,created:!0,shouldSave:e.shouldSave}]):l})),M=t(!1),I=w((async function(l=""){W.value=l;try{if(M.value=!0,!S(e.queryOptions)||!g(e.options))return;D.value=await e.queryOptions({keyword:l,row:e.row,column:e.column,rowIndex:e.rowIndex})}catch(l){console.log(`获取${e.column.field}options错误`)}finally{M.value=!1}}),400),U=l(y);function V(l,t){var o,n;const u=e.value;$("update:value",l);const i=h(U,e.row,e.column.field,_);U&&O(i)&&d(t).forEach((e=>{if(!q(e))return;const l=e;l.created&&l.shouldSave&&i.push(x(a(l),["created","shouldSave"]))}));const r=null==(o=e.column.editRender)?void 0:o.props;if(U&&r.connectField){const t=null==(n=r.connectField)?void 0:n.split(","),o=b.get(U);t.forEach((async t=>{var n;const{tableColumn:a}=_.reactData,u=a.find((e=>e.field===t)),i=null==(n=null==u?void 0:u.editRender)?void 0:n.props;if(null==i?void 0:i.queryOptions){const n=l?`${t}__${e.column.field}-${l}`:t;if(o[n])return;const a=await i.queryOptions({row:e.row,column:u,isFullData:!0});o[n]=a}}))}B({oldValue:u,option:C(t)})}function z(e){var l,t;"Tab"===e.key&&j.value&&(null==(t=(l=j.value).handleKeydown)||t.call(l,{...e,key:"Enter",preventDefault:e.preventDefault.bind(e)}))}function K(l){const t=l?E.value.map((l=>l[e.valueField])):[],o=e.value,n=O(o)?o.length:0;t.length!==n&&($("update:value",t),B({oldValue:o,option:l?C(E.value):[]}))}function N({node:e,option:l}){return l.desc?n("div",{class:"iho-table__selectOptionWrapper"},[[e,n(p,null,{trigger:()=>n(c,{component:m},null),default:()=>l.desc})]]):e}function R({option:l,handleClose:t}){var o;const a=null!=(o=e.aliasField&&l[e.aliasField])?o:l[e.labelField];return O(e.value)?e.deletable?n(v,{closable:!0,onClose:e=>{e.stopPropagation(),t()}},{default:()=>a}):`${a} ;`:n(u,null,[a])}function T(){return n(u,null,[n(f,{quaternary:!0,type:"primary",size:"tiny",onClick:()=>K(!0)},{default:()=>[i("全选")]}),n(f,{quaternary:!0,type:"primary",size:"tiny",onClick:()=>K(!1)},{default:()=>[i("清空")]})])}const G=()=>({class:"iho-table__selectOption"}),H=o((()=>{var l,t;return{...e.menuProps,class:`iho-table__selectMenu ${null!=(t=null==(l=e.menuProps)?void 0:l.class)?t:""}`}}));return()=>{const l={};return e.multiple&&e.selectAll&&(l.action=T),n(s,{ref:k,show:P.value,"onUpdate:show":e=>P.value=e,consistentMenuWidth:e.consistentMenuWidth,placeholder:e.placeholder,labelField:e.labelField,valueField:e.valueField,loading:M.value,options:E.value,multiple:e.multiple,value:e.value,remote:!0,onSearch:I,clearable:!0,filterable:!0,nodeProps:G,menuProps:H.value,renderTag:R,renderOption:N,onUpdateShow:A,onUpdateValue:V,onKeydown:z},l)}}});export{$ as default};
@@ -1 +1 @@
1
- import{inject as e,createVNode as o,mergeProps as l,onBeforeUnmount as t}from"vue";import{arrayed as n}from"../../../../../../../shared/utils/index.js";import"../../../../../index.js";import{EDITABLE_WIDGET_TYPE as i,InjectionIhoTableUUID as r}from"../../../../constants/index.js";import{useAutoFocus as s}from"../hooks/useAutoFocus.js";import{createIhoTableClearActivedInterceptor as u,getTitle as d,IhoTableRenderHelper as a,IhoTableUtils as c}from"../../../../utils/index.js";import p from"./editSelect.js";import{getDefaultValue as m,getArray as f}from"./selectUtils.js";import{getSelectOptions as v,selectOptionsMap as E}from"../hooks/useSelectOption.js";import{isEqual as b}from"lodash-es";import{defineTablePlugin as g}from"../../../../hooks/useTablePlugin.js";function h(){const h="selectRendererPlugin";return g({name:h,vxe(t){t.interceptor.add("event.clearActived",u(i.SELECT,(e=>e.classList.contains("iho-table__selectMenu")))),t.renderer.add(i.SELECT,{renderCell({props:l},{row:t,column:i,$table:s}){var u;const a=e(r),c=v(a,t,i.field,s),p=m(t,l,c),f=n(p).join(","),E=l&&(!0===(b=l.variableHeight)||"1"===b||(null==(u=l.componentProps)?void 0:u.indexedText));var b;return[o("span",{title:d(i,f)},[E?n(p).filter((e=>null!=e)).map(((e,l)=>[l+1,".",e,";",o("br",null,null)])):f])]},renderEdit:a.createRenderEdit((({fieldItem:t,emitFormClick:n,row:i,column:s,$rowIndex:u,$table:d})=>{const a=e(r),c=v(a,i,s.field,d);return[o(p,l({queryOptions:t.queryOptions},t.componentProps,{options:c,column:s,row:i,"row-index":u,value:i[s.field],"onUpdate:value":e=>i[s.field]=e,onClick:n}),null)]}))})},apply(e){s(e).bindAutoFocusConfig(h,i.SELECT,".n-base-selection-input");let o=null;async function l(e,o={}){var l,t,n;const i=null==(l=e.editRender)?void 0:l.props;let r=f(i.options)||f(null==(t=i.componentProps)?void 0:t.options)||[];if(i.queryOptions)try{const l={column:e,isFullData:!0,...o};r=await(null==(n=i.queryOptions)?void 0:n.call(i,l))}catch(e){console.log(`获取${i.field}_options错误`)}return r}e.fieldHooks.fieldList.tap(h,((e,{uuid:l})=>(o=e,l&&!E.get(l)&&E.set(l,{}),e))),e.fieldHooks.fieldEnd.tapPromise(h,(async({uuid:e},{$table:t})=>{if(!e)return;const n=E.get(e);null==o||o.forEach((async e=>{var i,r;const s=null==(i=e.editRender)?void 0:i.props;if(e.field&&s&&"SELECT"===c.getCellType(s)&&(n[e.field]||(n[e.field]=await l(e)),s.connectField&&(null==t?void 0:t.value))){const{tableData:i}=(null==(r=t.value)?void 0:r.getTableData())||{};i.forEach((t=>{s.connectField.split(",").forEach((async i=>{const r=`${i}__${e.field}-${t[s.columnName]}`;if(!t[s.columnName]||n[r])return;console.log("mapKey",r);const u=null==o?void 0:o.find((e=>e.field===i));u&&(n[r]=await l(u,{row:t}))}))}))}}))})),e.setupHooks.setup.tap(h,(e=>{t((()=>{e.value.uuid&&E.delete(e.value.uuid)}))})),e.eventHooks.onCellDblclick.tap(h,(({$table:e},o,{emits:l})=>{var t;const{column:n,row:r}=e.reactData.editStore.actived,s=null==(t=n.editRender)?void 0:t.props,{cellDblclickSelectable:u=!1,multiple:d=!1,valueField:a="value"}=s.componentProps||{};if(!u||!n||!function(e){return e&&c.getCellType(e)===i.SELECT}(s))return;const p=o.uuid&&E.get(o.uuid)[n.field];if(1!==(null==p?void 0:p.length))return;const m=d?[p[0][a]]:p[0][a],f=r[n.field];e.clearEdit(),b(m,f)||(r[n.field]=m,l("formChange",{column:n,row:r,oldValue:f,value:m,index:e.getRowIndex(r),$table:e,option:p[0]}))}))}})}export{h as selectRendererPlugin};
1
+ import{reactive as e,inject as o,createVNode as t,mergeProps as n,onBeforeUnmount as l}from"vue";import{arrayed as i}from"../../../../../../../shared/utils/index.js";import"../../../../../index.js";import{EDITABLE_WIDGET_TYPE as r,InjectionIhoTableUUID as s}from"../../../../constants/index.js";import{useAutoFocus as u}from"../hooks/useAutoFocus.js";import{createIhoTableClearActivedInterceptor as d,getTitle as a,IhoTableRenderHelper as c,IhoTableUtils as p}from"../../../../utils/index.js";import m from"./editSelect.js";import{getDefaultValue as f,getArray as v}from"./selectUtils.js";import{getSelectOptions as E,selectOptionsMap as g}from"../hooks/useSelectOption.js";import{cloneDeep as w,isEqual as b}from"lodash-es";import{defineTablePlugin as h}from"../../../../hooks/useTablePlugin.js";function C(){const C="selectRendererPlugin",x=e(new Map);return h({name:C,vxe(e){e.interceptor.add("event.clearActived",d(r.SELECT,(e=>e.classList.contains("iho-table__selectMenu")))),e.renderer.add(r.SELECT,{renderCell({props:e},{row:n,column:l,$table:r}){var u;const d=o(s),c=E(d,n,l.field,r),p=f(n,e,c),m=i(p).join(","),v=e&&(!0===(g=e.variableHeight)||"1"===g||(null==(u=e.componentProps)?void 0:u.indexedText));var g;return[t("span",{title:a(l,m)},[v?i(p).filter((e=>null!=e)).map(((e,o)=>[o+1,".",e,";",t("br",null,null)])):m])]},renderEdit:c.createRenderEdit((({fieldItem:e,emitFormClick:l,row:i,column:r,$rowIndex:u,$table:d})=>{const a=o(s),c=E(a,i,r.field,d);return[t(m,n({queryOptions:e.queryOptions},e.componentProps,{options:c,column:r,row:i,"row-index":u,value:i[r.field],"onUpdate:value":e=>i[r.field]=e,onClick:l}),null)]}))})},apply(e){async function o(e,o={}){var t,n,l;const i=null==(t=e.editRender)?void 0:t.props;let r=v(i.options)||v(null==(n=i.componentProps)?void 0:n.options)||[];if(i.queryOptions)try{const t={column:e,isFullData:!0,...o};r=await(null==(l=i.queryOptions)?void 0:l.call(i,t))}catch(e){console.log(`获取${i.field}_options错误`)}return r}u(e).bindAutoFocusConfig(C,r.SELECT,".n-base-selection-input"),e.fieldHooks.fieldList.tap(C,((e,{uuid:o})=>(o&&(g.get(o)||g.set(o,{}),x.set(o,w(e))),e))),e.dataHooks.data.tapPromise(C,(async(e,{uuid:t},n)=>{if(!t)return;const l=x.get(t);if(!l||!l.length)return;const i=g.get(t);l.forEach((async t=>{var n;const r=null==(n=t.editRender)?void 0:n.props;if(t.field&&r&&"SELECT"===p.getCellType(r)){if(r.connectField){const n=r.connectField.split(","),s=e[r.columnName];n.forEach((async n=>{const u=null==l?void 0:l.find((e=>e.field===n));if(!u)return;if(!s&&!i[r.columnName])return void(i[r.columnName]=await o(t));const d=`${n}__${r.columnName}-${s}`;i[d]||(i[d]=await o(u,{row:e}))}))}i[t.field]||(i[t.field]=await o(t))}}))})),e.setupHooks.setup.tap(C,(e=>{l((()=>{var o;const t=null==(o=e.value)?void 0:o.uuid;t&&(g.delete(t),x.delete(t))}))})),e.eventHooks.onCellDblclick.tap(C,(({$table:e},o,{emits:t})=>{var n;const{column:l,row:i}=e.reactData.editStore.actived,s=null==(n=l.editRender)?void 0:n.props,{cellDblclickSelectable:u=!1,multiple:d=!1,valueField:a="value"}=s.componentProps||{};if(!u||!l||!function(e){return e&&p.getCellType(e)===r.SELECT}(s))return;const c=o.uuid&&E(o.uuid,i,l.field,e);if(1!==(null==c?void 0:c.length))return;const m=d?[c[0][a]]:c[0][a],f=i[l.field];e.clearEdit(),b(m,f)||(i[l.field]=m,t("formChange",{column:l,row:i,oldValue:f,value:m,index:e.getRowIndex(i),$table:e,option:c[0]}))}))}})}export{C as selectRendererPlugin};
@@ -1 +1 @@
1
- import{reactive as e,inject as t,createVNode as o,toRaw as i,h as n,onBeforeUnmount as r}from"vue";import{traverse as s}from"../../../../../../../shared/utils/index.js";import{isFunction as a,isObject as u,range as l}from"lodash-es";import"../../../../../index.js";import{EDITABLE_WIDGET_TYPE as d,InjectionIhoTableUUID as c}from"../../../../constants/index.js";import{useAutoFocus as p}from"../hooks/useAutoFocus.js";import{createIhoTableClearActivedInterceptor as f,IhoTableRenderHelper as m,getRowHeight as h,getColumnRenderWidth as v,parseMergeField as A}from"../../../../utils/index.js";import g from"./editSeparate.vue.js";import{contentSeparate as E,getColumnInfoMaxLength as R,generateSeparateRowData as w,isSeparateColumn as b}from"./separateUtils.js";import{getSeparateInfo as _,setSeparateInfo as k,deleteSeparateInfo as x}from"../../../../utils/separateMap.js";import{defineTablePlugin as P}from"../../../../hooks/useTablePlugin.js";function T(){const T="separateRendererPlugins",S=e(new Map);return P({name:T,vxe(e){e.interceptor.add("event.clearActived",f(d.SEPARATE,(e=>e.classList.contains("v-binder-follower-content")))),e.renderer.add(d.SEPARATE,{renderCell(e,{column:i,row:n}){var r,s;const a=t(c),u=(null!=(s=null==(r=_(a,n))?void 0:r.separateData)?s:{})[i.field];return o("section",{class:"iho-table__ellipsis",title:u},[u])},renderEdit:m.createRenderEdit((({fieldItem:e,column:r,row:s,emitFormClick:l})=>{var d,p,f;const m=t(c),v=_(m,s),A=h(),E={};let R=null!=(p=null==(d=e.componentProps)?void 0:d.separateSlot)?p:e.separateSlot;return R&&(R=i(R),E.menu=a(R)?R:u(R)?e=>n(R,e):void 0),[o(g,{value:s[r.field],"onUpdate:value":e=>s[r.field]=e,"row-index":null==v?void 0:v.index,height:A,column:r,row:s,"display-content":null==(f=null==v?void 0:v.separateData)?void 0:f[r.field],onClick:l},E)]}))})},apply(e){function t(e){return(...t)=>{var o;return!(null==(o=t[0].row)?void 0:o.$__SEPARATE)&&(!a(e)||e(...t))}}p(e).bindAutoFocusConfig(T,d.SEPARATE,".iho-table__separateText"),e.fieldHooks.fieldList.tap(T,((e,{uuid:t})=>(t&&S.set(t,e.reduce(((e,t)=>(s(t,(t=>{b(t)&&(e.push(i(t)),t.showOverflow="ellipsis")})),e)),[])),e))),e.dataHooks.data.tapPromise(T,(async(e,t,{insertAfter:o,index:i,$table:n})=>{if(!t.uuid)return;const r=S.get(t.uuid);if(!r||!r.length)return;const s=[];for(const t of r){if(!t.field)continue;const o=await v(t,n);s.push({field:t.field,data:E(A(e,t),t,o)})}l(R(s)).forEach(((n,r,a)=>{const u=w(s,r),l={index:i,originalData:e,separateData:u,separateIndex:r,separateLength:a.length,isOriginRow:0===r,isLastRow:r===a.length-1};if(0===r)return e.$__SEPARATE_DATA=[u],void k(t.uuid,e,l);const d={$__SEPARATE:!0};k(t.uuid,d,l),e.$__SEPARATE_DATA.push(u),o(d)}))})),e.eventHooks.onResizableChange.tap(T,(async({column:e},t,o)=>{b(e)&&o.updateTableDataRef()})),e.configHooks.editConfig.tap(T,((e={},t)=>{const o=e.beforeEditMethod;return e.beforeEditMethod=(...e)=>{var i;if(!t.uuid)return p();const n=S.get(t.uuid);if(!n||!n.length)return p();const{row:r,column:s}=e[0],u=_(t.uuid,r);if(!u)return p();const l=null==(i=s.editRender)?void 0:i.props;if(!l)return p();const{isOriginRow:d,isLastRow:c}=u;return("bottom"===l.separatePlacement?c:d)&&p();function p(){return!a(o)||o(...e)}},e})),e.configHooks.checkboxConfig.tap(T,((e={},o)=>(e.checkMethod=t(e.checkMethod),e.visibleMethod=t(e.visibleMethod),e))),e.setupHooks.setup.tap(T,(e=>{r((()=>{e.value.uuid&&(S.delete(e.value.uuid),x(e.value.uuid))}))}))}})}export{T as separateRendererPlugins};
1
+ import{reactive as e,inject as t,createVNode as a,toRaw as r,h as o,onBeforeUnmount as i}from"vue";import{traverse as n}from"../../../../../../../shared/utils/index.js";import{isArray as u,isFunction as l,isObject as s,range as d,flatten as p}from"lodash-es";import{NInput as c}from"naive-ui";import"../../../../../index.js";import{EDITABLE_WIDGET_TYPE as f,InjectionIhoTableUUID as m,InjectionIhoTableHandler as _}from"../../../../constants/index.js";import{useAutoFocus as v}from"../hooks/useAutoFocus.js";import{createIhoTableClearActivedInterceptor as h,getLowCodeFieldFromField as A,IhoTableRenderHelper as E,getRowHeight as g,getColumnRenderWidth as R,parseMergeField as D}from"../../../../utils/index.js";import w from"./editSeparate.vue.js";import{contentSeparate as T,getLengthDiffArray as b,getColumnInfoMaxLength as P,generateSeparateRowData as k,isSeparateColumn as x}from"./separateUtils.js";import{getSeparateInfo as S,setSeparateInfo as $,deleteSeparateInfo as j}from"../../../../utils/separateMap.js";import{defineTablePlugin as H}from"../../../../hooks/useTablePlugin.js";function M(){const M="separateRendererPlugins",C=e(new Map);return H({name:M,vxe(e){e.interceptor.add("event.clearActived",h(f.SEPARATE,(e=>e.classList.contains("v-binder-follower-content")))),e.interceptor.add("event.clearActived",(({row:e,column:t})=>{if(!e.$__uuid)return!0;const a=A(t);if(!a||!a.separateRowEdit)return!0;const r=S(e.$__uuid,e);if(!r)return!0;const{separateData:o,originalData:i,ihoTableHandler:n}=r,{field:l}=t;if(o["__"+l]&&o["__"+l]!==o[l]&&u(i.$__SEPARATE_DATA)){const e=i.$__SEPARATE_DATA.map((e=>{var t;return null!=(t=e["__"+l])?t:e[l]}));i[l]=u(i[l])?e:e.join(""),null==n||n.updateTableDataRef()}return!0})),e.renderer.add(f.SEPARATE,{renderCell(e,{column:r,row:o}){var i,n;const u=t(m),l=null!=(n=null==(i=S(u,o))?void 0:i.separateData)?n:{},s=A(r),d=(null==s?void 0:s.separateFormatter)?s.separateFormatter(l[r.field]):l[r.field];return a("section",{class:"iho-table__ellipsis",title:d},[d])},renderEdit:E.createRenderEdit((({fieldItem:e,column:i,row:n,emitFormClick:u})=>{var d,p;const f=t(m),v=S(f,n),h=g(),A={};let E=null!=(p=null==(d=e.componentProps)?void 0:d.separateSlot)?p:e.separateSlot;return E&&(E=r(E),A.menu=l(E)?E:s(E)?e=>o(E,e):void 0),e.separateRowEdit?function(){if(!v)return[];if(v.ihoTableHandler=t(_),v.separateData["__"+i.field]=v.separateData["__"+i.field]||v.separateData[i.field],A.menu){const e=A.menu;return a(e,{column:i,col:i,row:n,value:v.separateData["__"+i.field],"onUpdate:value":e=>v.separateData["__"+i.field]=e},null)}return[a(c,{value:v.separateData["__"+i.field],"onUpdate:value":e=>v.separateData["__"+i.field]=e},null)]}():[a(w,{value:n[i.field],"onUpdate:value":e=>n[i.field]=e,"row-index":null==v?void 0:v.index,height:h,column:i,row:n,"display-content":null==(R=null==v?void 0:v.separateData)?void 0:R[i.field],onClick:u},A)];var R}))})},apply(e){function t(e){return(...t)=>{var a;return!(null==(a=t[0].row)?void 0:a.$__SEPARATE)&&(!l(e)||e(...t))}}v(e).bindAutoFocusConfig(M,f.SEPARATE,".iho-table__separateText"),e.fieldHooks.fieldList.tap(M,((e,{uuid:t})=>(t&&C.set(t,e.reduce(((e,t)=>(n(t,(t=>{x(t)&&(e.push(r(t)),t.showOverflow="ellipsis")})),e)),[])),e))),e.dataHooks.data.tapPromise(M,(async(e,t,{insertAfter:a,index:r,$table:o})=>{var i;if(!t.uuid)return;const n=C.get(t.uuid);if(!n||!n.length)return;const l=[];for(const t of n){if(!t.field)continue;const a=await R(t,o),r={field:t.field,column:t,data:T(D(e,t),t,a,null==(i=A(t))?void 0:i.separateDeep)};l.push(r)}l.forEach((({column:e,data:t})=>{const a=A(e);if(!a)return;if(!a.separateDeep||!a.separateBinder)return;const r=(o=a.separateBinder,l.find((e=>e.field===o)));var o;r&&t.forEach(((e,a)=>{const o=r.data[a];if(!o||!u(e))return;const i=u(o)?o.length:1;if(i===e.length)return;const n=b(i,e.length);i>e.length?t[a].push(...n):u(o)?o.push(...n):r.data[a]=d(e.length).map(((e,t)=>0===t?o:""))}))})),l.forEach((e=>{e.data=p(e.data)})),d(P(l)).forEach(((o,i,n)=>{const u=k(l,i),s={index:r,originalData:e,separateData:u,separateIndex:i,separateLength:n.length,isOriginRow:0===i,isLastRow:i===n.length-1};if(0===i)return e.$__SEPARATE_DATA=[u],e.$__uuid=t.uuid,void $(t.uuid,e,s);const d={$__SEPARATE:!0,$__uuid:t.uuid};$(t.uuid,d,s),e.$__SEPARATE_DATA.push(u),a(d)}))})),e.eventHooks.onResizableChange.tap(M,(async({column:e},t,a)=>{x(e)&&a.updateTableDataRef()})),e.configHooks.editConfig.tap(M,((e={},t)=>{const a=e.beforeEditMethod;return e.beforeEditMethod=(...e)=>{var r;if(!t.uuid)return c();const o=C.get(t.uuid);if(!o||!o.length)return c();const{row:i,column:n}=e[0],u=S(t.uuid,i);if(!u)return c();const s=null==(r=n.editRender)?void 0:r.props;if(!s||s.separateRowEdit)return c();const{isOriginRow:d,isLastRow:p}=u;return("bottom"===s.separatePlacement?p:d)&&c();function c(){return!l(a)||a(...e)}},e})),e.configHooks.checkboxConfig.tap(M,((e={},a)=>(e.checkMethod=t(e.checkMethod),e.visibleMethod=t(e.visibleMethod),e))),e.setupHooks.setup.tap(M,(e=>{i((()=>{e.value.uuid&&(C.delete(e.value.uuid),j(e.value.uuid))}))}))}})}export{M as separateRendererPlugins};
@@ -1,12 +1,13 @@
1
- import { AnyObject } from '../../../../../../../../es/shared/types';
1
+ import { AnyObject, ArrayAble } from '../../../../../../../../es/shared/types';
2
2
  import { VxeTableDefines } from 'vxe-table';
3
3
  import { IhoTableFieldItem } from '../../../../../../../../es/components/iho-table';
4
4
  declare type ParsedRowDataInfo = {
5
5
  field: string;
6
- data: string[];
6
+ data: ArrayAble<string>[];
7
7
  };
8
8
  export declare function getColumnInfoMaxLength(parsedRowDataInfo: ParsedRowDataInfo[]): number;
9
9
  export declare function generateSeparateRowData(parsedRowDataInfo: ParsedRowDataInfo[], index: number): AnyObject;
10
- export declare function contentSeparate(value: unknown, field: IhoTableFieldItem, width: number): any[];
10
+ export declare function contentSeparate(value: unknown, field: IhoTableFieldItem, width: number, isDeep?: boolean): any[];
11
11
  export declare function isSeparateColumn(field: IhoTableFieldItem | VxeTableDefines.ColumnInfo): boolean | "" | undefined;
12
+ export declare function getLengthDiffArray(l1: number, l2: number, defaultValue?: string): string[];
12
13
  export {};
@@ -1 +1 @@
1
- import{getStringWidth as e}from"../../../../../../../shared/utils/index.js";import{isArray as n,cloneDeep as r,isString as t,isNumber as l}from"lodash-es";import{EDITABLE_WIDGET_TYPE as d}from"../../../../constants/index.js";function i(e){return Math.max(...e.map((e=>e.data.length)),1)}function o(e,n){return e.reduce(((e,r)=>(e[r.field]=r.data[n],e)),{})}function u(d,i,o){return n(d)?d.map((e=>{var n,t,l,d;return null!=(d=null==(l=null==(t=null==(n=i.editRender)?void 0:n.props)?void 0:t.separateFormatter)?void 0:l.call(t,r(e)))?d:i.field?e[i.field]:null})):t(d)&&l(o)?(o-=24,[...d].reduce(((n,r)=>{const t=n[n.length-1];return e(t+r)>o?n.push(r):n[n.length-1]=t+r,n}),[""])):[d]}function a(e){var n;return e.field&&(null==(n=e.editRender)?void 0:n.name)===d.SEPARATE}export{u as contentSeparate,o as generateSeparateRowData,i as getColumnInfoMaxLength,a as isSeparateColumn};
1
+ import{getStringWidth as r}from"../../../../../../../shared/utils/index.js";import{isArray as t,isString as n,isNumber as e}from"lodash-es";import{EDITABLE_WIDGET_TYPE as o}from"../../../../constants/index.js";import{getLowCodeFieldFromField as i}from"../../../../utils/index.js";function a(r){return Math.max(...r.map((r=>r.data.length)),1)}function u(r,t){return r.reduce(((r,n)=>(r[n.field]=n.data[t],r)),{})}function s(o,a,u,d=!1){var f;if(t(o)){if(d){const r=null==(f=i(a))?void 0:f.separateFormatter;return o.map((t=>s(r?r(t):t,a,u)))}return o}if(!n(o)||!e(u))return[o];u-=24;const m=[...o].reduce(((t,n)=>{const e=t[t.length-1];return r(e+n)>u?t.push(n):t[t.length-1]=e+n,t}),[""]);return d?[m]:m}function d(r){var t;return r.field&&(null==(t=r.editRender)?void 0:t.name)===o.SEPARATE}function f(r,t,n=""){const e=Math.abs(r-t);return Array.from({length:e}).map((()=>n))}export{s as contentSeparate,u as generateSeparateRowData,a as getColumnInfoMaxLength,f as getLengthDiffArray,d as isSeparateColumn};
@@ -1,4 +1,4 @@
1
- import { AnyObject, ArrayAble, BindEventSettingItem, FormOperationalConfig, LOW_CODE_VALUE_RELATION, MaybeString, TupleToUnion } from '../../../../../es/shared/types';
1
+ import { AnyObject, ArrayAble, BindEventSettingItem, FormOperationalConfig, Func, LOW_CODE_VALUE_RELATION, MaybeString, TupleToUnion } from '../../../../../es/shared/types';
2
2
  import { VxeTableProps, VxeTableDefines, VxeTableInstance, VxeColumnPropTypes, VxeTablePropTypes, VxeTableConstructor } from 'vxe-table';
3
3
  import { VxePagerEventProps } from 'vxe-table/types/pager';
4
4
  import { VxeTableEventProps, VxeTableListeners, VxeTablePrivateMethods } from 'vxe-table/types/table';
@@ -122,6 +122,11 @@ export declare type LowCodeTableFieldItem = {
122
122
  headerSlotFn: NonNullable<IhoTableFieldItem['slots']>['header'];
123
123
  editSlotFn: NonNullable<IhoTableFieldItem['slots']>['edit'];
124
124
  footerSlotFn: NonNullable<IhoTableFieldItem['slots']>['footer'];
125
+ separateSlot: AnyObject | Func;
126
+ separateFormatter: (row: AnyObject) => any;
127
+ separateDeep: boolean;
128
+ separateBinder: string;
129
+ separateRowEdit: boolean;
125
130
  /**
126
131
  * 即将被废弃,请使用表格外层的beforeEditMethod属性
127
132
  * @deprecated
@@ -174,4 +179,5 @@ export declare type IhoTableSeparateInfo = {
174
179
  originalData: AnyObject;
175
180
  separateIndex: number;
176
181
  separateLength: number;
182
+ ihoTableHandler?: IhoTableHandler;
177
183
  };
@@ -1 +1 @@
1
- var e="@cnhis-design-vue/shared",i="3.1.51-beta.8",s="index.ts",n={"naive-ui":"^2.30.0",vue:"^3.2.0"},a={"@vicons/ionicons5":"^0.12.0","lodash-es":"^4.17.21",moment:"^2.29.1","video.js":"^7.19.2","videojs-contrib-hls":"^5.15.0",viewerjs:"^1.10.5","xe-utils":"^3.5.4"},d={name:e,version:"3.1.51-beta.8",private:!0,main:"index.ts",peerDependencies:n,dependencies:a};export{d as default,a as dependencies,s as main,e as name,n as peerDependencies,i as version};
1
+ var e="@cnhis-design-vue/shared",i="3.1.51-beta.9",s="index.ts",n={"naive-ui":"^2.30.0",vue:"^3.2.0"},a={"@vicons/ionicons5":"^0.12.0","lodash-es":"^4.17.21",moment:"^2.29.1","video.js":"^7.19.2","videojs-contrib-hls":"^5.15.0",viewerjs:"^1.10.5","xe-utils":"^3.5.4"},d={name:e,version:"3.1.51-beta.9",private:!0,main:"index.ts",peerDependencies:n,dependencies:a};export{d as default,a as dependencies,s as main,e as name,n as peerDependencies,i as version};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "3.1.51-beta.8",
3
+ "version": "3.1.51-beta.9",
4
4
  "license": "ISC",
5
5
  "module": "./es/components/index.js",
6
6
  "main": "./es/components/index.js",
@@ -63,5 +63,5 @@
63
63
  "iOS 7",
64
64
  "last 3 iOS versions"
65
65
  ],
66
- "gitHead": "1d7ef0d697a3640322529c04452972ba26347f18"
66
+ "gitHead": "8006eb80a27c6ef9c2adb0d25a75805b2d223c0d"
67
67
  }