@agile-team/mach-table-vue 0.28.0 → 0.29.2
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/README.md +33 -9
- package/dist/MachTable-GBPI4D5W.cjs +1 -0
- package/dist/MachTable-XSOG6VGB.js +1 -0
- package/dist/adapters.cjs +1 -1
- package/dist/adapters.js +1 -1
- package/dist/async.cjs +1 -1
- package/dist/async.js +1 -1
- package/dist/{chunk-2ANGCJOO.js → chunk-3VP52LWA.js} +1 -1
- package/dist/{chunk-J3SALTBK.cjs → chunk-5JCLLHKU.cjs} +1 -1
- package/dist/chunk-67FAUPVE.cjs +1 -0
- package/dist/{chunk-Y4S6TCE5.js → chunk-6EIKXQ34.js} +1 -1
- package/dist/chunk-7MMXRLRK.js +1 -0
- package/dist/chunk-J3F33EIC.js +1 -0
- package/dist/{chunk-YQIRPQHT.cjs → chunk-KMXOU5Z3.cjs} +1 -1
- package/dist/chunk-TRZLFCVK.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +23 -5
- package/dist/index.d.ts +23 -5
- package/dist/index.js +1 -1
- package/dist/mach-table.css +464 -80
- package/dist/ui.cjs +1 -1
- package/dist/ui.js +1 -1
- package/dist/workflows.cjs +1 -1
- package/dist/workflows.d.cts +15 -3
- package/dist/workflows.d.ts +15 -3
- package/dist/workflows.js +1 -1
- package/package.json +3 -3
- package/dist/MachTable-6IGIPSES.js +0 -1
- package/dist/MachTable-EL36L7JW.cjs +0 -1
- package/dist/chunk-7LXDVLDD.cjs +0 -1
- package/dist/chunk-7MRR4IDI.js +0 -1
- package/dist/chunk-SQVY5G55.js +0 -1
- package/dist/chunk-XECIDGIZ.cjs +0 -1
package/dist/ui.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _vue = require('vue');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _vue = require('vue');var _adapter = require('@agile-team/mach-table/adapter');var M={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},g=_vue.defineComponent.call(void 0, {name:"MachTableDensitySelect",props:{value:{type:String,required:!0},onSelectDensity:{type:Function,required:!0}},setup(e){let i=_vue.ref.call(void 0, null),c=null;return _vue.onMounted.call(void 0, ()=>{c=_adapter.createSelectControl.call(void 0, {ariaLabel:"\u8868\u683C\u5BC6\u5EA6",options:[{value:"compact",label:"\u7D27\u51D1"},{value:"normal",label:"\u6807\u51C6"},{value:"large",label:"\u5BBD\u677E"}],value:e.value,classNames:{root:"mach-toolbar__select-control",native:"mach-toolbar__select"},onChange:o=>e.onSelectDensity(o)}),_optionalChain([i, 'access', _ => _.value, 'optionalAccess', _2 => _2.appendChild, 'call', _3 => _3(c.el)])}),_vue.watch.call(void 0, ()=>e.value,o=>_optionalChain([c, 'optionalAccess', _4 => _4.setValue, 'call', _5 => _5(o)])),_vue.onBeforeUnmount.call(void 0, ()=>_optionalChain([c, 'optionalAccess', _6 => _6.destroy, 'call', _7 => _7()])),()=>_vue.h.call(void 0, "div",{ref:i,class:"mach-toolbar__select-host"})}}),u= exports.MachTableToolbar =_vue.defineComponent.call(void 0, {name:"MachTableToolbar",props:{api:{type:Object,default:null},commands:{type:Object,default:null},modelValue:{type:String,default:""},loading:{type:Boolean,default:!1},selectedCount:{type:Number,default:0},searchPlaceholder:{type:String,default:"\u641C\u7D22\u5F53\u524D\u7ED3\u679C"},exportFilename:{type:String,default:"mach-table.csv"},features:{type:Object,default:()=>({})}},emits:["update:modelValue","refresh","clearSelection"],setup(e,{emit:i,slots:c}){let o=a=>_nullishCoalesce(e.features[a], () => (M[a])),r=(a,...n)=>{let l=e.commands?Reflect.get(e.commands,a):void 0;return typeof l=="function"&&e.commands?Reflect.apply(l,e.commands,n):void 0},d=(a,n,l,b=!1)=>_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:b,onClick:l},n),m=()=>{let a=[..._nullishCoalesce(_optionalChain([c, 'access', _8 => _8.start, 'optionalCall', _9 => _9()]), () => ([]))];return o("search")&&a.push(_vue.h.call(void 0, "label",{class:"mach-toolbar__search"},[_vue.h.call(void 0, "span",{class:"mach-sr-only"},e.searchPlaceholder),_vue.h.call(void 0, "span",{"aria-hidden":"true"},"\u2315"),_vue.h.call(void 0, "input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;i("update:modelValue",l),e.commands?r("search",l||null):_optionalChain([e, 'access', _10 => _10.api, 'optionalAccess', _11 => _11.filtering, 'access', _12 => _12.setQuickText, 'call', _13 => _13(l||null)])}})])),o("refresh")&&a.push(d("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{i("refresh"),e.commands?r("refresh"):_optionalChain([e, 'access', _14 => _14.api, 'optionalAccess', _15 => _15.rows, 'access', _16 => _16.isRemote, 'call', _17 => _17()])?e.api.rows.reload():_optionalChain([e, 'access', _18 => _18.api, 'optionalAccess', _19 => _19.view, 'access', _20 => _20.refreshCells, 'call', _21 => _21()])},e.loading)),o("columns")&&a.push(d("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?r("openColumns",l):_optionalChain([e, 'access', _22 => _22.api, 'optionalAccess', _23 => _23.columns, 'access', _24 => _24.openWorkbench, 'call', _25 => _25(l)]))})),o("density")&&a.push(_vue.h.call(void 0, g,{value:_nullishCoalesce(_optionalChain([e, 'access', _26 => _26.api, 'optionalAccess', _27 => _27.getOption, 'call', _28 => _28("size")]), () => ("normal")),onSelectDensity:n=>{e.commands?r("setDensity",n):_optionalChain([e, 'access', _29 => _29.api, 'optionalAccess', _30 => _30.updateOptions, 'call', _31 => _31({size:n})])}})),a.push(..._nullishCoalesce(_optionalChain([c, 'access', _32 => _32.default, 'optionalCall', _33 => _33()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__main"},a)},h=()=>{let a=[];return e.selectedCount>0&&a.push(_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__selection",onClick:()=>i("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),o("undoRedo")&&(a.push(d("\u64A4\u9500","\u21B6",()=>{e.commands?r("undo"):_optionalChain([e, 'access', _34 => _34.api, 'optionalAccess', _35 => _35.editing, 'access', _36 => _36.undo, 'call', _37 => _37()])},e.commands?!e.commands.canUndo():!_optionalChain([e, 'access', _38 => _38.api, 'optionalAccess', _39 => _39.editing, 'access', _40 => _40.canUndo, 'call', _41 => _41()]))),a.push(d("\u91CD\u505A","\u21B7",()=>{e.commands?r("redo"):_optionalChain([e, 'access', _42 => _42.api, 'optionalAccess', _43 => _43.editing, 'access', _44 => _44.redo, 'call', _45 => _45()])},e.commands?!e.commands.canRedo():!_optionalChain([e, 'access', _46 => _46.api, 'optionalAccess', _47 => _47.editing, 'access', _48 => _48.canRedo, 'call', _49 => _49()])))),o("export")&&a.push(d("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&r("exportCsv",e.exportFilename)},!e.commands)),o("fullscreen")&&a.push(d("\u5168\u5C4F","\u26F6",()=>{r("toggleFullscreen")},!e.commands)),a.push(..._nullishCoalesce(_optionalChain([c, 'access', _50 => _50.end, 'optionalCall', _51 => _51()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__aside"},a)};return()=>_vue.h.call(void 0, "div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[m(),h()])}});var C={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",u)}};var V=C;exports.MachTableToolbar = u; exports.MachTableUiPlugin = C; exports.default = V;
|
package/dist/ui.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as
|
|
1
|
+
import{defineComponent as s,h as t,onBeforeUnmount as f,onMounted as T,ref as y,watch as v}from"vue";import{createSelectControl as p}from"@agile-team/mach-table/adapter";var M={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},g=s({name:"MachTableDensitySelect",props:{value:{type:String,required:!0},onSelectDensity:{type:Function,required:!0}},setup(e){let i=y(null),c=null;return T(()=>{c=p({ariaLabel:"\u8868\u683C\u5BC6\u5EA6",options:[{value:"compact",label:"\u7D27\u51D1"},{value:"normal",label:"\u6807\u51C6"},{value:"large",label:"\u5BBD\u677E"}],value:e.value,classNames:{root:"mach-toolbar__select-control",native:"mach-toolbar__select"},onChange:o=>e.onSelectDensity(o)}),i.value?.appendChild(c.el)}),v(()=>e.value,o=>c?.setValue(o)),f(()=>c?.destroy()),()=>t("div",{ref:i,class:"mach-toolbar__select-host"})}}),u=s({name:"MachTableToolbar",props:{api:{type:Object,default:null},commands:{type:Object,default:null},modelValue:{type:String,default:""},loading:{type:Boolean,default:!1},selectedCount:{type:Number,default:0},searchPlaceholder:{type:String,default:"\u641C\u7D22\u5F53\u524D\u7ED3\u679C"},exportFilename:{type:String,default:"mach-table.csv"},features:{type:Object,default:()=>({})}},emits:["update:modelValue","refresh","clearSelection"],setup(e,{emit:i,slots:c}){let o=a=>e.features[a]??M[a],r=(a,...n)=>{let l=e.commands?Reflect.get(e.commands,a):void 0;return typeof l=="function"&&e.commands?Reflect.apply(l,e.commands,n):void 0},d=(a,n,l,b=!1)=>t("button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:b,onClick:l},n),m=()=>{let a=[...c.start?.()??[]];return o("search")&&a.push(t("label",{class:"mach-toolbar__search"},[t("span",{class:"mach-sr-only"},e.searchPlaceholder),t("span",{"aria-hidden":"true"},"\u2315"),t("input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;i("update:modelValue",l),e.commands?r("search",l||null):e.api?.filtering.setQuickText(l||null)}})])),o("refresh")&&a.push(d("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{i("refresh"),e.commands?r("refresh"):e.api?.rows.isRemote()?e.api.rows.reload():e.api?.view.refreshCells()},e.loading)),o("columns")&&a.push(d("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?r("openColumns",l):e.api?.columns.openWorkbench(l))})),o("density")&&a.push(t(g,{value:e.api?.getOption("size")??"normal",onSelectDensity:n=>{e.commands?r("setDensity",n):e.api?.updateOptions({size:n})}})),a.push(...c.default?.()??[]),t("div",{class:"mach-toolbar__main"},a)},h=()=>{let a=[];return e.selectedCount>0&&a.push(t("button",{type:"button",class:"mach-toolbar__selection",onClick:()=>i("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),o("undoRedo")&&(a.push(d("\u64A4\u9500","\u21B6",()=>{e.commands?r("undo"):e.api?.editing.undo()},e.commands?!e.commands.canUndo():!e.api?.editing.canUndo())),a.push(d("\u91CD\u505A","\u21B7",()=>{e.commands?r("redo"):e.api?.editing.redo()},e.commands?!e.commands.canRedo():!e.api?.editing.canRedo()))),o("export")&&a.push(d("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&r("exportCsv",e.exportFilename)},!e.commands)),o("fullscreen")&&a.push(d("\u5168\u5C4F","\u26F6",()=>{r("toggleFullscreen")},!e.commands)),a.push(...c.end?.()??[]),t("div",{class:"mach-toolbar__aside"},a)};return()=>t("div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[m(),h()])}});var C={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",u)}};var V=C;export{u as MachTableToolbar,C as MachTableUiPlugin,V as default};
|
package/dist/workflows.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkEGEQGM3Dcjs = require('./chunk-EGEQGM3D.cjs');var _vue = require('vue');var _machtable = require('@agile-team/mach-table');function j(a,n={}){let p=_vue.shallowRef.call(void 0, []),o=_vue.ref.call(void 0, []),d=_vue.ref.call(void 0, !1),h=_vue.shallowRef.call(void 0, null),v=_vue.shallowRef.call(void 0, null),S=_vue.computed.call(void 0, ()=>o.value.length>0),D=_vue.computed.call(void 0, ()=>[..._nullishCoalesce(_optionalChain([v, 'access', _2 => _2.value, 'optionalAccess', _3 => _3.failures]), () => ([])),..._nullishCoalesce(_optionalChain([v, 'access', _4 => _4.value, 'optionalAccess', _5 => _5.conflicts]), () => ([]))]),C=_vue.computed.call(void 0, ()=>[...new Set(D.value.map(r=>r.rowId))]),w=null,m=()=>{let r=a.api.value;if(!r||r.isDestroyed()){o.value=[],p.value=[];return}o.value=r.editing.getDirtyRowIds(),p.value=r.editing.getChanges()};_vue.watch.call(void 0, a.api,r=>{_optionalChain([w, 'optionalCall', _6 => _6()]),w=null,m(),!(!r||r.isDestroyed())&&(w=r.on("dirtyStateChanged",m))},{immediate:!0});let g=async(r,s)=>{let f=a.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(d.value)throw new Error("[MachTable] A save operation is already in progress.");d.value=!0,h.value=null,v.value=null;try{let c=await f.editing.save(r,s);return v.value=c,m(),_optionalChain([n, 'access', _7 => _7.onSaveSuccess, 'optionalCall', _8 => _8(c.saved)]),_optionalChain([n, 'access', _9 => _9.onSaveResult, 'optionalCall', _10 => _10(c)]),c}catch(c){throw h.value=c,_optionalChain([n, 'access', _11 => _11.onSaveError, 'optionalCall', _12 => _12(c)]),c}finally{d.value=!1}},T=async(r,s)=>(await g(r,s)).saved,l=()=>{v.value=null},x=(r,s)=>{let f=v.value,c=_optionalChain([f, 'optionalAccess', _13 => _13.conflicts, 'access', _14 => _14.find, 'call', _15 => _15(b=>b.rowId===r)]),y=a.api.value;return!f||!c||!y||!_machtable.resolveSaveConflict.call(void 0, y,c,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(b=>b.rowId!==r)},m(),!0)},z=r=>{let s=_nullishCoalesce(_optionalChain([a, 'access', _16 => _16.api, 'access', _17 => _17.value, 'optionalAccess', _18 => _18.editing, 'access', _19 => _19.rollback, 'call', _20 => _20(r)]), () => (!1));return m(),s},E=r=>{_optionalChain([a, 'access', _21 => _21.api, 'access', _22 => _22.value, 'optionalAccess', _23 => _23.editing, 'access', _24 => _24.markSaved, 'call', _25 => _25(r)]),m()},M=(r,s,f=!1)=>{let c=a.api.value,y=_optionalChain([c, 'optionalAccess', _26 => _26.rows, 'access', _27 => _27.getById, 'call', _28 => _28(r)]);return!c||!y||y.rowIndex<0?!1:(c.view.scrollToRow(y.rowIndex,"middle"),s&&f?c.editing.startCell({rowIndex:y.rowIndex,colId:s}):!0)},I=r=>{if(!S.value)return;let s=_nullishCoalesce(n.beforeUnloadMessage, () => ("\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002"));return r.preventDefault(),r.returnValue=s,s};return n.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",I),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([w, 'optionalCall', _29 => _29()]),w=null,n.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",I)}),{changes:p,dirtyRowIds:o,dirty:S,saving:d,saveError:h,lastSaveResult:v,saveIssues:D,failedRowIds:C,save:T,saveDetailed:g,clearSaveIssues:l,resolveConflict:x,rollback:z,markSaved:E,reveal:M,refresh:m}}function re(a){return typeof a=="function"?a():_vue.isRef.call(void 0, a)?a.value:a}function W(a,n){return typeof a=="number"&&Number.isFinite(a)&&a>0?Math.floor(a):n}function De(a){return(a instanceof DOMException||typeof a=="object"&&a!=null&&"name"in a)&&a.name==="AbortError"}function X(a){let n=_vue.shallowRef.call(void 0, []),p=_vue.ref.call(void 0, !1),o=_vue.shallowRef.call(void 0, null),d=_vue.ref.call(void 0, W(a.initialPage,1)),h=_vue.ref.call(void 0, W(a.pageSize,20)),v=_vue.ref.call(void 0, 0),S=_vue.shallowRef.call(void 0, []),D=_vue.shallowRef.call(void 0, {}),C=_vue.shallowRef.call(void 0, null),w=_vue.ref.call(void 0, []),m=_vue.shallowRef.call(void 0, []),g=new Set,T=new Set,l=new Map,x=_nullishCoalesce(a.quickFilterText, () => (_vue.ref.call(void 0, null))),z=_nullishCoalesce(a.selectionScope, () => ("preserve")),E=a.mode!=="manual",M=_vue.ref.call(void 0, !1),I=_vue.ref.call(void 0, 0),r=[...new Set((_nullishCoalesce(a.pageSizeOptions, () => ([10,20,50,100]))).map(e=>W(e,0)).filter(Boolean))];r.includes(h.value)||r.push(h.value),r.sort((e,t)=>e-t);let s=null,f=null,c=0,y=null,b=!1,q=!1,B=!1,R=e=>{let t=typeof a.rowKey=="function"?a.rowKey(e):_machtable.getByPath.call(void 0, e,a.rowKey);if(t==null||String(t).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(a.rowKey)}" returned an empty value.`);return String(t)},P=()=>{B=!0,w.value=M.value?[]:[...g],B=!1;let e=M.value?[...l.keys()]:[...g];m.value=e.flatMap(t=>{let i=l.get(t);return i===void 0||T.has(t)?[]:[i]}),I.value++},L=e=>M.value?!T.has(e):g.has(e),F=()=>{if(!s||s.isDestroyed())return;let e=n.value.filter(t=>L(R(t)));q=!0;try{s.selection.setRows(e,!0)}finally{q=!1}},Z=()=>{c++,_optionalChain([f, 'optionalAccess', _30 => _30.abort, 'call', _31 => _31()]),f=null,y!=null&&clearTimeout(y),y=null,p.value=!1},_=(e,t)=>e.signal.aborted||t!==c,ne=e=>{if(!e||!Array.isArray(e.rows)||!Number.isFinite(e.total)||e.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},oe=async(e,t,i)=>{if(_(t,i))return;ne(e);let u=[...e.rows];for(let U of u)R(U);n.value=u,v.value=Math.floor(e.total);for(let U of n.value){let H=R(U);L(H)?l.set(H,U):l.delete(H)}P(),_optionalChain([a, 'access', _32 => _32.onSuccess, 'optionalCall', _33 => _33(e)]),await _vue.nextTick.call(void 0, ),F()},ie=(e,t,i)=>{_(t,i)||De(e)||(o.value=_nullishCoalesce(e, () => (new Error)),_optionalChain([a, 'access', _34 => _34.onError, 'optionalCall', _35 => _35(o.value)]))},k=async()=>{y!=null&&clearTimeout(y),y=null,_optionalChain([f, 'optionalAccess', _36 => _36.abort, 'call', _37 => _37()]);let e=new AbortController;f=e;let t=++c;p.value=!0,o.value=null,a.keepPreviousData===!1&&(n.value=[]);try{let i=await a.request({page:d.value,pageSize:h.value,query:re(a.query),sortModel:S.value.map(u=>({...u})),filterModel:{...D.value},advancedFilterModel:_machtable.normalizeAdvancedFilterModel.call(void 0, C.value),quickFilterText:x.value,signal:e.signal});await oe(i,e,t)}catch(i){ie(i,e,t)}finally{t===c&&(p.value=!1,f===e&&(f=null))}},K=e=>{e&&(d.value=1),y!=null&&clearTimeout(y),f&&(c++,f.abort(),f=null,p.value=!1);let t=Math.max(0,_nullishCoalesce(a.debounceMs, () => (0)));if(t===0){k();return}y=setTimeout(()=>{k()},t)},se=e=>{s=e.api,_vue.nextTick.call(void 0, F)},ue=e=>{b||e.page===d.value&&e.pageSize===h.value||(d.value=e.page,h.value=e.pageSize,E&&k())},ce=e=>{b||(S.value=e.sortModel.map(t=>({...t})),E?K(!0):d.value=1)},de=e=>{if(b)return;D.value={...e.filterModel},C.value=_machtable.normalizeAdvancedFilterModel.call(void 0, e.advancedFilterModel);let t=e.api.filtering.getQuickText();if(x.value!==t){b=!0;try{x.value=t}finally{b=!1}}a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1},fe=e=>{if(q)return;let t=new Set(n.value.map(R)),i=new Set(e.selectedRows.map(R));if(M.value){for(let u of t)i.has(u)?T.delete(u):(T.add(u),l.delete(u));for(let u of e.selectedRows)l.set(R(u),u);P();return}if(z==="page")g.clear(),l.clear();else for(let u of t)g.delete(u),l.delete(u);for(let u of e.selectedRows){let U=R(u);g.add(U),l.set(U,u)}P()},ve=_vue.computed.call(void 0, ()=>({rowData:n.value,loading:p.value,rowKey:R,manualSorting:!0,manualFiltering:!0,advancedFilterModel:C.value,quickFilterText:x.value,error:o.value,overlayErrorTemplate:o.value?()=>_nullishCoalesce(_optionalChain([a, 'access', _38 => _38.errorOverlay, 'optionalCall', _39 => _39({error:o.value,retry:k})]), () => ("Remote request failed. Please retry.")):void 0,overlayNoRowsTemplate:a.emptyOverlay,pagination:{mode:"server",page:d.value,pageSize:h.value,pageSizeOptions:r,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:se,onPaginationChanged:ue,onSortChanged:ce,onFilterChanged:de,onSelectionChanged:fe})),ge=async(e={})=>{e.resetPage&&(d.value=1),await k()},ye=async()=>{b=!0;try{d.value=1,S.value=[],D.value={},C.value=null,x.value=null,A(),_optionalChain([s, 'optionalAccess', _40 => _40.sorting, 'access', _41 => _41.setModel, 'call', _42 => _42(null)]),_optionalChain([s, 'optionalAccess', _43 => _43.filtering, 'access', _44 => _44.setModel, 'call', _45 => _45(null)]),_optionalChain([s, 'optionalAccess', _46 => _46.filtering, 'access', _47 => _47.setAdvancedModel, 'call', _48 => _48(null)]),_optionalChain([s, 'optionalAccess', _49 => _49.filtering, 'access', _50 => _50.setQuickText, 'call', _51 => _51(null)]),await _vue.nextTick.call(void 0, )}finally{b=!1}await k()},A=()=>{M.value=!1,g.clear(),T.clear(),l.clear(),P(),q=!0;try{_optionalChain([s, 'optionalAccess', _52 => _52.selection, 'access', _53 => _53.clear, 'call', _54 => _54()])}finally{q=!1}},he=()=>{M.value=!0,g.clear(),T.clear(),l.clear();for(let e of n.value)l.set(R(e),e);P(),F()},pe=e=>{g.clear(),T.clear(),l.clear(),M.value=e.mode==="allMatching";let t=e.mode==="allMatching"?e.excludedKeys:e.selectedKeys;for(let i of t.map(String))e.mode==="allMatching"?T.add(i):g.add(i);for(let i of n.value){let u=R(i);L(u)&&l.set(u,i)}P(),F()},Te=_vue.computed.call(void 0, ()=>(I.value,M.value?{mode:"allMatching",excludedKeys:[...T]}:{mode:"explicit",selectedKeys:[...g]}));return _vue.watch.call(void 0, ()=>re(a.query),()=>{a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1},{deep:!0,immediate:E&&a.immediate!==!1}),_vue.watch.call(void 0, x,()=>{b||(a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1)},{flush:"sync"}),_vue.watch.call(void 0, w,e=>{if(B)return;M.value=!1,T.clear();let t=new Set(e.map(String));g.clear();for(let i of t)g.add(i);for(let i of[...l.keys()])t.has(i)||l.delete(i);for(let i of n.value){let u=R(i);t.has(u)&&l.set(u,i)}F(),P()},{deep:!0,flush:"sync"}),_vue.onScopeDispose.call(void 0, ()=>{Z(),s=null}),{rows:n,loading:p,error:o,page:d,pageSize:h,total:v,sortModel:S,filterModel:D,advancedFilterModel:C,selectedKeys:w,selectedRows:m,selectionState:Te,bindings:ve,reload:ge,retry:k,reset:ye,abort:Z,clearSelection:A,selectAllMatching:he,applySelectionState:pe}}function Pe(a={}){let n=_chunkEGEQGM3Dcjs.a.call(void 0, ),p=_vue.ref.call(void 0, _nullishCoalesce(a.initialSearch, () => (""))),o=a.query?X({...a.query,quickFilterText:_nullishCoalesce(a.query.quickFilterText, () => (_vue.computed.call(void 0, ()=>p.value||null)))}):null,d=j(n,a.editing),h=_vue.shallowRef.call(void 0, []),v=null,S=()=>{h.value=_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _55 => _55.selectedRows, 'access', _56 => _56.value]), () => (_optionalChain([n, 'access', _57 => _57.api, 'access', _58 => _58.value, 'optionalAccess', _59 => _59.selection, 'access', _60 => _60.getRows, 'call', _61 => _61()]))), () => ([]))};_vue.watch.call(void 0, n.api,l=>{_optionalChain([v, 'optionalCall', _62 => _62()]),v=null,l&&!l.isDestroyed()&&(v=l.on("selectionChanged",S)),S()},{immediate:!0}),o&&_vue.watch.call(void 0, o.selectedRows,S,{deep:!1});let D=async()=>{if(o)await o.reload();else{let l=n.api.value;_optionalChain([l, 'optionalAccess', _63 => _63.rows, 'access', _64 => _64.isRemote, 'call', _65 => _65()])?await l.rows.reload():_optionalChain([l, 'optionalAccess', _66 => _66.view, 'access', _67 => _67.refreshCells, 'call', _68 => _68()])}},C=_machtable.createMachTableCommands.call(void 0, {getApi:()=>n.api.value,reload:D}),w=_vue.computed.call(void 0, ()=>_nullishCoalesce(_optionalChain([o, 'optionalAccess', _69 => _69.bindings, 'access', _70 => _70.value]), () => ({}))),m=_vue.computed.call(void 0, ()=>{if(!o)return h.value.length;let l=o.selectionState.value;return l.mode==="allMatching"?Math.max(0,o.total.value-l.excludedKeys.length):l.selectedKeys.length}),g=_vue.computed.call(void 0, ()=>_optionalChain([o, 'optionalAccess', _71 => _71.loading, 'access', _72 => _72.value])===!0||d.saving.value),T=_vue.computed.call(void 0, ()=>_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _73 => _73.error, 'access', _74 => _74.value]), () => (d.saveError.value)), () => (null)));return _vue.watch.call(void 0, p,l=>{o||C.search(l||null)}),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([v, 'optionalCall', _75 => _75()]),v=null}),{table:n,query:o,editing:d,bindings:w,search:p,selectedRows:h,selectedCount:m,busy:g,error:T,commands:C,reload:D}}exports.useMachTableController = Pe; exports.useMachTableEditing = j; exports.useMachTableQuery = X;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkEGEQGM3Dcjs = require('./chunk-EGEQGM3D.cjs');var _vue = require('vue');var _machtable = require('@agile-team/mach-table');function $(e,r={}){let h=_vue.shallowRef.call(void 0, []),o=_vue.ref.call(void 0, []),c=_vue.ref.call(void 0, !1),y=_vue.shallowRef.call(void 0, null),v=_vue.shallowRef.call(void 0, null),M=_vue.computed.call(void 0, ()=>o.value.length>0),E=_vue.computed.call(void 0, ()=>[..._nullishCoalesce(_optionalChain([v, 'access', _2 => _2.value, 'optionalAccess', _3 => _3.failures]), () => ([])),..._nullishCoalesce(_optionalChain([v, 'access', _4 => _4.value, 'optionalAccess', _5 => _5.conflicts]), () => ([]))]),x=_vue.computed.call(void 0, ()=>[...new Set(E.value.map(n=>n.rowId))]),w=null,m=()=>{let n=e.api.value;if(!n||n.isDestroyed()){o.value=[],h.value=[];return}o.value=n.editing.getDirtyRowIds(),h.value=n.editing.getChanges()};_vue.watch.call(void 0, e.api,n=>{_optionalChain([w, 'optionalCall', _6 => _6()]),w=null,m(),!(!n||n.isDestroyed())&&(w=n.on("dirtyStateChanged",m))},{immediate:!0});let g=async(n,s)=>{let f=e.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(c.value)throw new Error("[MachTable] A save operation is already in progress.");c.value=!0,y.value=null,v.value=null;try{let d=await f.editing.save(n,s);return v.value=d,m(),_optionalChain([r, 'access', _7 => _7.onSaveSuccess, 'optionalCall', _8 => _8(d.saved)]),_optionalChain([r, 'access', _9 => _9.onSaveResult, 'optionalCall', _10 => _10(d)]),d}catch(d){throw y.value=d,_optionalChain([r, 'access', _11 => _11.onSaveError, 'optionalCall', _12 => _12(d)]),d}finally{c.value=!1}},p=async(n,s)=>(await g(n,s)).saved,t=()=>{v.value=null},R=(n,s)=>{let f=v.value,d=_optionalChain([f, 'optionalAccess', _13 => _13.conflicts, 'access', _14 => _14.find, 'call', _15 => _15(S=>S.rowId===n)]),T=e.api.value;return!f||!d||!T||!_machtable.resolveSaveConflict.call(void 0, T,d,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(S=>S.rowId!==n)},m(),!0)},U=n=>{let s=_nullishCoalesce(_optionalChain([e, 'access', _16 => _16.api, 'access', _17 => _17.value, 'optionalAccess', _18 => _18.editing, 'access', _19 => _19.rollback, 'call', _20 => _20(n)]), () => (!1));return m(),s},b=n=>{_optionalChain([e, 'access', _21 => _21.api, 'access', _22 => _22.value, 'optionalAccess', _23 => _23.editing, 'access', _24 => _24.markSaved, 'call', _25 => _25(n)]),m()},D=(n,s,f=!1)=>{let d=e.api.value,T=_optionalChain([d, 'optionalAccess', _26 => _26.rows, 'access', _27 => _27.getById, 'call', _28 => _28(n)]);return!d||!T||T.rowIndex<0?!1:(d.view.scrollToRow(T.rowIndex,"middle"),s&&f?d.editing.startCell({rowIndex:T.rowIndex,colId:s}):!0)},F=n=>{if(!M.value)return;let s=_nullishCoalesce(r.beforeUnloadMessage, () => ("\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002"));return n.preventDefault(),n.returnValue=s,s};return r.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",F),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([w, 'optionalCall', _29 => _29()]),w=null,r.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",F)}),{changes:h,dirtyRowIds:o,dirty:M,saving:c,saveError:y,lastSaveResult:v,saveIssues:E,failedRowIds:x,save:p,saveDetailed:g,clearSaveIssues:t,resolveConflict:R,rollback:U,markSaved:b,reveal:D,refresh:m}}function re(e){return typeof e=="function"?e():_vue.isRef.call(void 0, e)?e.value:e}function X(e,r){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):r}function Ce(e){return(e instanceof DOMException||typeof e=="object"&&e!=null&&"name"in e)&&e.name==="AbortError"}function Y(e){let r=_vue.shallowRef.call(void 0, []),h=_vue.ref.call(void 0, !1),o=_vue.shallowRef.call(void 0, null),c=_vue.ref.call(void 0, X(e.initialPage,1)),y=_vue.ref.call(void 0, X(e.pageSize,20)),v=_vue.ref.call(void 0, 0),M=_vue.shallowRef.call(void 0, []),E=_vue.shallowRef.call(void 0, {}),x=_vue.shallowRef.call(void 0, null),w=_vue.ref.call(void 0, []),m=_vue.shallowRef.call(void 0, []),g=new Set,p=new Set,t=new Map,R=_nullishCoalesce(e.quickFilterText, () => (_vue.ref.call(void 0, null))),U=_nullishCoalesce(e.selectionScope, () => ("preserve")),b=e.mode!=="manual",D=_vue.ref.call(void 0, !1),F=_vue.ref.call(void 0, 0),n=[...new Set((_nullishCoalesce(e.pageSizeOptions, () => ([10,20,50,100]))).map(a=>X(a,0)).filter(Boolean))];n.includes(y.value)||n.push(y.value),n.sort((a,l)=>a-l);let s=null,f=null,d=0,T=null,S=!1,I=!1,V=!1,C=a=>{let l=typeof e.rowKey=="function"?e.rowKey(a):_machtable.getByPath.call(void 0, a,e.rowKey);if(l==null||String(l).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(e.rowKey)}" returned an empty value.`);return String(l)},k=()=>{V=!0,w.value=D.value?[]:[...g],V=!1;let a=D.value?[...t.keys()]:[...g];m.value=a.flatMap(l=>{let i=t.get(l);return i===void 0||p.has(l)?[]:[i]}),F.value++},L=a=>D.value?!p.has(a):g.has(a),G=()=>{if(!s||s.isDestroyed())return;let a=r.value.filter(l=>L(C(l)));I=!0;try{s.selection.setRows(a,!0)}finally{I=!1}},_=()=>{d++,_optionalChain([f, 'optionalAccess', _30 => _30.abort, 'call', _31 => _31()]),f=null,T!=null&&clearTimeout(T),T=null,h.value=!1},ee=(a,l)=>a.signal.aborted||l!==d,oe=a=>{if(!a||!Array.isArray(a.rows)||!Number.isFinite(a.total)||a.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},ie=async(a,l,i)=>{if(ee(l,i))return;oe(a);let u=[...a.rows];for(let O of u)C(O);r.value=u,v.value=Math.floor(a.total);for(let O of r.value){let H=C(O);L(H)?t.set(H,O):t.delete(H)}k(),_optionalChain([e, 'access', _32 => _32.onSuccess, 'optionalCall', _33 => _33(a)]),await _vue.nextTick.call(void 0, ),G()},se=(a,l,i)=>{ee(l,i)||Ce(a)||(o.value=_nullishCoalesce(a, () => (new Error)),_optionalChain([e, 'access', _34 => _34.onError, 'optionalCall', _35 => _35(o.value)]))},Q=async()=>{T!=null&&clearTimeout(T),T=null,_optionalChain([f, 'optionalAccess', _36 => _36.abort, 'call', _37 => _37()]);let a=new AbortController;f=a;let l=++d;h.value=!0,o.value=null,e.keepPreviousData===!1&&(r.value=[]);try{let i=await e.request({page:c.value,pageSize:y.value,query:re(e.query),sortModel:M.value.map(u=>({...u})),filterModel:{...E.value},advancedFilterModel:_machtable.normalizeAdvancedFilterModel.call(void 0, x.value),quickFilterText:R.value,signal:a.signal});await ie(i,a,l)}catch(i){se(i,a,l)}finally{l===d&&(h.value=!1,f===a&&(f=null))}},K=a=>{a&&(c.value=1),T!=null&&clearTimeout(T),f&&(d++,f.abort(),f=null,h.value=!1);let l=Math.max(0,_nullishCoalesce(e.debounceMs, () => (0)));if(l===0){Q();return}T=setTimeout(()=>{Q()},l)},ue=a=>{s=a.api,_vue.nextTick.call(void 0, G)},de=a=>{S||a.page===c.value&&a.pageSize===y.value||(c.value=a.page,y.value=a.pageSize,b&&Q())},ce=a=>{S||(M.value=a.sortModel.map(l=>({...l})),b?K(!0):c.value=1)},fe=a=>{if(S)return;E.value={...a.filterModel},x.value=_machtable.normalizeAdvancedFilterModel.call(void 0, a.advancedFilterModel);let l=a.api.filtering.getQuickText();if(R.value!==l){S=!0;try{R.value=l}finally{S=!1}}e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},ve=a=>{if(I)return;let l=new Set(r.value.map(C)),i=new Set(a.selectedRows.map(C));if(D.value){for(let u of l)i.has(u)?p.delete(u):(p.add(u),t.delete(u));for(let u of a.selectedRows)t.set(C(u),u);k();return}if(U==="page")g.clear(),t.clear();else for(let u of l)g.delete(u),t.delete(u);for(let u of a.selectedRows){let O=C(u);g.add(O),t.set(O,u)}k()},ge=_vue.computed.call(void 0, ()=>({rowData:r.value,loading:h.value,rowKey:C,manualSorting:!0,manualFiltering:!0,advancedFilterModel:x.value,quickFilterText:R.value,error:o.value,overlayErrorTemplate:o.value?()=>_nullishCoalesce(_optionalChain([e, 'access', _38 => _38.errorOverlay, 'optionalCall', _39 => _39({error:o.value,retry:Q})]), () => ("Remote request failed. Please retry.")):void 0,overlayNoRowsTemplate:e.emptyOverlay,pagination:{mode:"server",page:c.value,pageSize:y.value,pageSizeOptions:n,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:ue,onPaginationChanged:de,onSortChanged:ce,onFilterChanged:fe,onSelectionChanged:ve})),Te=async(a={})=>{a.resetPage&&(c.value=1),await Q()},he=async()=>{S=!0;try{c.value=1,M.value=[],E.value={},x.value=null,R.value=null,A(),_optionalChain([s, 'optionalAccess', _40 => _40.sorting, 'access', _41 => _41.setModel, 'call', _42 => _42(null)]),_optionalChain([s, 'optionalAccess', _43 => _43.filtering, 'access', _44 => _44.setModel, 'call', _45 => _45(null)]),_optionalChain([s, 'optionalAccess', _46 => _46.filtering, 'access', _47 => _47.setAdvancedModel, 'call', _48 => _48(null)]),_optionalChain([s, 'optionalAccess', _49 => _49.filtering, 'access', _50 => _50.setQuickText, 'call', _51 => _51(null)]),await _vue.nextTick.call(void 0, )}finally{S=!1}await Q()},A=()=>{D.value=!1,g.clear(),p.clear(),t.clear(),k(),I=!0;try{_optionalChain([s, 'optionalAccess', _52 => _52.selection, 'access', _53 => _53.clear, 'call', _54 => _54()])}finally{I=!1}},ye=()=>{D.value=!0,g.clear(),p.clear(),t.clear();for(let a of r.value)t.set(C(a),a);k(),G()},pe=a=>{g.clear(),p.clear(),t.clear(),D.value=a.mode==="allMatching";let l=a.mode==="allMatching"?a.excludedKeys:a.selectedKeys;for(let i of l.map(String))a.mode==="allMatching"?p.add(i):g.add(i);for(let i of r.value){let u=C(i);L(u)&&t.set(u,i)}k(),G()},me=_vue.computed.call(void 0, ()=>(F.value,D.value?{mode:"allMatching",excludedKeys:[...p]}:{mode:"explicit",selectedKeys:[...g]}));return _vue.watch.call(void 0, ()=>re(e.query),()=>{e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},{deep:!0,immediate:b&&e.immediate!==!1}),_vue.watch.call(void 0, R,()=>{S||(e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1)},{flush:"sync"}),_vue.watch.call(void 0, w,a=>{if(V)return;D.value=!1,p.clear();let l=new Set(a.map(String));g.clear();for(let i of l)g.add(i);for(let i of[...t.keys()])l.has(i)||t.delete(i);for(let i of r.value){let u=C(i);l.has(u)&&t.set(u,i)}G(),k()},{deep:!0,flush:"sync"}),_vue.onScopeDispose.call(void 0, ()=>{_(),s=null}),{rows:r,loading:h,error:o,page:c,pageSize:y,total:v,sortModel:M,filterModel:E,advancedFilterModel:x,selectedKeys:w,selectedRows:m,selectionState:me,bindings:ge,reload:Te,retry:Q,reset:he,abort:_,clearSelection:A,selectAllMatching:ye,applySelectionState:pe}}function Oe(e={}){let r=_chunkEGEQGM3Dcjs.a.call(void 0, ),h=_vue.ref.call(void 0, _nullishCoalesce(_nullishCoalesce(e.initialSearch, () => (_optionalChain([e, 'access', _55 => _55.config, 'optionalAccess', _56 => _56.quickFilterText]))), () => (""))),o=e.query?Y({...e.query,quickFilterText:_nullishCoalesce(e.query.quickFilterText, () => (_vue.computed.call(void 0, ()=>h.value||null)))}):null,c=$(r,e.editing),y=_vue.shallowRef.call(void 0, []),v=null,M=()=>{y.value=_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _57 => _57.selectedRows, 'access', _58 => _58.value]), () => (_optionalChain([r, 'access', _59 => _59.api, 'access', _60 => _60.value, 'optionalAccess', _61 => _61.selection, 'access', _62 => _62.getRows, 'call', _63 => _63()]))), () => ([]))};_vue.watch.call(void 0, r.api,t=>{_optionalChain([v, 'optionalCall', _64 => _64()]),v=null,t&&!t.isDestroyed()&&(v=t.on("selectionChanged",M)),M()},{immediate:!0}),o&&_vue.watch.call(void 0, o.selectedRows,M,{deep:!1});let E=async()=>{if(o)await o.reload();else{let t=r.api.value;_optionalChain([t, 'optionalAccess', _65 => _65.rows, 'access', _66 => _66.isRemote, 'call', _67 => _67()])?await t.rows.reload():_optionalChain([t, 'optionalAccess', _68 => _68.view, 'access', _69 => _69.refreshCells, 'call', _70 => _70()])}},x=_machtable.createMachTableCommands.call(void 0, {getApi:()=>r.api.value,reload:E}),w=_vue.computed.call(void 0, ()=>{let t={...e.config,..._nullishCoalesce(_optionalChain([o, 'optionalAccess', _71 => _71.bindings, 'access', _72 => _72.value]), () => ({})),quickFilterText:h.value||null},R=z(e.loading),U=z(e.theme),b=z(e.editMode);return R!==void 0&&(t.loading=R),U!==void 0&&(t.theme=U),b!==void 0&&(t.editType=b==="row"?"fullRow":"cell",t.editableIndicator=b==="cell"?"hover":"none"),e.onCellValueChanged&&(t.onCellValueChanged=e.onCellValueChanged),e.onRowEditingStopped&&(t.onRowEditingStopped=e.onRowEditingStopped),e.onGridError&&(t.onGridError=e.onGridError),t}),m=_vue.computed.call(void 0, ()=>{if(!o)return y.value.length;let t=o.selectionState.value;return t.mode==="allMatching"?Math.max(0,o.total.value-t.excludedKeys.length):t.selectedKeys.length}),g=_vue.computed.call(void 0, ()=>z(e.loading)===!0||_optionalChain([o, 'optionalAccess', _73 => _73.loading, 'access', _74 => _74.value])===!0||c.saving.value),p=_vue.computed.call(void 0, ()=>_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _75 => _75.error, 'access', _76 => _76.value]), () => (c.saveError.value)), () => (null)));return _vue.watch.call(void 0, h,t=>{o||x.search(t||null)}),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([v, 'optionalCall', _77 => _77()]),v=null}),{table:r,query:o,editing:c,bindings:w,search:h,selectedRows:y,selectedCount:m,busy:g,error:p,commands:x,reload:E}}function z(e){return typeof e=="function"?e():_vue.isRef.call(void 0, e)?e.value:e}exports.useMachTableController = Oe; exports.useMachTableEditing = $; exports.useMachTableQuery = Y;
|
package/dist/workflows.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ShallowRef, Ref, ComputedRef } from 'vue';
|
|
2
2
|
import { GridChange, GridBatchSaveResult, SaveChangeIssue, SaveChangeConflict, SaveChangesHandler, SortModel, FilterModel, AdvancedFilterModel, OverlayContent, OverlayTemplate, GridOptions, MachTableCommands } from '@agile-team/mach-table';
|
|
3
3
|
import { U as UseMachTableReturn } from './useMachTable-YH4Xj6dS.cjs';
|
|
4
|
-
import './MachTable-jS92BIXm.cjs';
|
|
4
|
+
import { c as MachTableVueProps } from './MachTable-jS92BIXm.cjs';
|
|
5
5
|
import '@agile-team/mach-table/adapter';
|
|
6
6
|
|
|
7
7
|
interface UseMachTableEditingOptions<TData = any> {
|
|
@@ -114,17 +114,29 @@ interface UseMachTableQueryReturn<TData> {
|
|
|
114
114
|
*/
|
|
115
115
|
declare function useMachTableQuery<TData, TQuery = Record<string, unknown>>(options: UseMachTableQueryOptions<TData, TQuery>): UseMachTableQueryReturn<TData>;
|
|
116
116
|
|
|
117
|
+
type MachTableBindingSource<T> = T | Readonly<{
|
|
118
|
+
value: T;
|
|
119
|
+
}> | (() => T);
|
|
120
|
+
type MachTableEditMode = "none" | "cell" | "row";
|
|
117
121
|
interface UseMachTableControllerOptions<TData, TQuery = Record<string, unknown>> {
|
|
122
|
+
/** Stable table props. Dynamic state below is bridged into `bindings` automatically. */
|
|
123
|
+
config?: MachTableVueProps<TData>;
|
|
118
124
|
/** Omit for local rowData; provide for a complete remote table workflow. */
|
|
119
125
|
query?: UseMachTableQueryOptions<TData, TQuery>;
|
|
120
126
|
editing?: UseMachTableEditingOptions<TData>;
|
|
121
127
|
initialSearch?: string;
|
|
128
|
+
loading?: MachTableBindingSource<boolean>;
|
|
129
|
+
theme?: MachTableBindingSource<NonNullable<GridOptions<TData>["theme"]>>;
|
|
130
|
+
editMode?: MachTableBindingSource<MachTableEditMode>;
|
|
131
|
+
onCellValueChanged?: GridOptions<TData>["onCellValueChanged"];
|
|
132
|
+
onRowEditingStopped?: GridOptions<TData>["onRowEditingStopped"];
|
|
133
|
+
onGridError?: GridOptions<TData>["onGridError"];
|
|
122
134
|
}
|
|
123
135
|
interface UseMachTableControllerReturn<TData> {
|
|
124
136
|
table: UseMachTableReturn<TData>;
|
|
125
137
|
query: UseMachTableQueryReturn<TData> | null;
|
|
126
138
|
editing: UseMachTableEditingReturn<TData>;
|
|
127
|
-
bindings: ComputedRef<
|
|
139
|
+
bindings: ComputedRef<MachTableVueProps<TData>>;
|
|
128
140
|
search: Ref<string>;
|
|
129
141
|
selectedRows: ShallowRef<TData[]>;
|
|
130
142
|
selectedCount: ComputedRef<number>;
|
|
@@ -136,4 +148,4 @@ interface UseMachTableControllerReturn<TData> {
|
|
|
136
148
|
/** One cohesive controller for API readiness, query, selection, editing and toolbar commands. */
|
|
137
149
|
declare function useMachTableController<TData, TQuery = Record<string, unknown>>(options?: UseMachTableControllerOptions<TData, TQuery>): UseMachTableControllerReturn<TData>;
|
|
138
150
|
|
|
139
|
-
export { type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
|
|
151
|
+
export { type MachTableBindingSource, type MachTableEditMode, type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
|
package/dist/workflows.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ShallowRef, Ref, ComputedRef } from 'vue';
|
|
2
2
|
import { GridChange, GridBatchSaveResult, SaveChangeIssue, SaveChangeConflict, SaveChangesHandler, SortModel, FilterModel, AdvancedFilterModel, OverlayContent, OverlayTemplate, GridOptions, MachTableCommands } from '@agile-team/mach-table';
|
|
3
3
|
import { U as UseMachTableReturn } from './useMachTable-DXGZxgIJ.js';
|
|
4
|
-
import './MachTable-jS92BIXm.js';
|
|
4
|
+
import { c as MachTableVueProps } from './MachTable-jS92BIXm.js';
|
|
5
5
|
import '@agile-team/mach-table/adapter';
|
|
6
6
|
|
|
7
7
|
interface UseMachTableEditingOptions<TData = any> {
|
|
@@ -114,17 +114,29 @@ interface UseMachTableQueryReturn<TData> {
|
|
|
114
114
|
*/
|
|
115
115
|
declare function useMachTableQuery<TData, TQuery = Record<string, unknown>>(options: UseMachTableQueryOptions<TData, TQuery>): UseMachTableQueryReturn<TData>;
|
|
116
116
|
|
|
117
|
+
type MachTableBindingSource<T> = T | Readonly<{
|
|
118
|
+
value: T;
|
|
119
|
+
}> | (() => T);
|
|
120
|
+
type MachTableEditMode = "none" | "cell" | "row";
|
|
117
121
|
interface UseMachTableControllerOptions<TData, TQuery = Record<string, unknown>> {
|
|
122
|
+
/** Stable table props. Dynamic state below is bridged into `bindings` automatically. */
|
|
123
|
+
config?: MachTableVueProps<TData>;
|
|
118
124
|
/** Omit for local rowData; provide for a complete remote table workflow. */
|
|
119
125
|
query?: UseMachTableQueryOptions<TData, TQuery>;
|
|
120
126
|
editing?: UseMachTableEditingOptions<TData>;
|
|
121
127
|
initialSearch?: string;
|
|
128
|
+
loading?: MachTableBindingSource<boolean>;
|
|
129
|
+
theme?: MachTableBindingSource<NonNullable<GridOptions<TData>["theme"]>>;
|
|
130
|
+
editMode?: MachTableBindingSource<MachTableEditMode>;
|
|
131
|
+
onCellValueChanged?: GridOptions<TData>["onCellValueChanged"];
|
|
132
|
+
onRowEditingStopped?: GridOptions<TData>["onRowEditingStopped"];
|
|
133
|
+
onGridError?: GridOptions<TData>["onGridError"];
|
|
122
134
|
}
|
|
123
135
|
interface UseMachTableControllerReturn<TData> {
|
|
124
136
|
table: UseMachTableReturn<TData>;
|
|
125
137
|
query: UseMachTableQueryReturn<TData> | null;
|
|
126
138
|
editing: UseMachTableEditingReturn<TData>;
|
|
127
|
-
bindings: ComputedRef<
|
|
139
|
+
bindings: ComputedRef<MachTableVueProps<TData>>;
|
|
128
140
|
search: Ref<string>;
|
|
129
141
|
selectedRows: ShallowRef<TData[]>;
|
|
130
142
|
selectedCount: ComputedRef<number>;
|
|
@@ -136,4 +148,4 @@ interface UseMachTableControllerReturn<TData> {
|
|
|
136
148
|
/** One cohesive controller for API readiness, query, selection, editing and toolbar commands. */
|
|
137
149
|
declare function useMachTableController<TData, TQuery = Record<string, unknown>>(options?: UseMachTableControllerOptions<TData, TQuery>): UseMachTableControllerReturn<TData>;
|
|
138
150
|
|
|
139
|
-
export { type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
|
|
151
|
+
export { type MachTableBindingSource, type MachTableEditMode, type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
|
package/dist/workflows.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as ae}from"./chunk-YTEW56VQ.js";import{computed as N,onScopeDispose as be,ref as te,shallowRef as j,watch as Se}from"vue";import{resolveSaveConflict as Me}from"@agile-team/mach-table";function $(e,r={}){let h=j([]),o=te([]),c=te(!1),y=j(null),v=j(null),M=N(()=>o.value.length>0),E=N(()=>[...v.value?.failures??[],...v.value?.conflicts??[]]),x=N(()=>[...new Set(E.value.map(n=>n.rowId))]),w=null,m=()=>{let n=e.api.value;if(!n||n.isDestroyed()){o.value=[],h.value=[];return}o.value=n.editing.getDirtyRowIds(),h.value=n.editing.getChanges()};Se(e.api,n=>{w?.(),w=null,m(),!(!n||n.isDestroyed())&&(w=n.on("dirtyStateChanged",m))},{immediate:!0});let g=async(n,s)=>{let f=e.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(c.value)throw new Error("[MachTable] A save operation is already in progress.");c.value=!0,y.value=null,v.value=null;try{let d=await f.editing.save(n,s);return v.value=d,m(),r.onSaveSuccess?.(d.saved),r.onSaveResult?.(d),d}catch(d){throw y.value=d,r.onSaveError?.(d),d}finally{c.value=!1}},p=async(n,s)=>(await g(n,s)).saved,t=()=>{v.value=null},R=(n,s)=>{let f=v.value,d=f?.conflicts.find(S=>S.rowId===n),T=e.api.value;return!f||!d||!T||!Me(T,d,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(S=>S.rowId!==n)},m(),!0)},U=n=>{let s=e.api.value?.editing.rollback(n)??!1;return m(),s},b=n=>{e.api.value?.editing.markSaved(n),m()},D=(n,s,f=!1)=>{let d=e.api.value,T=d?.rows.getById(n);return!d||!T||T.rowIndex<0?!1:(d.view.scrollToRow(T.rowIndex,"middle"),s&&f?d.editing.startCell({rowIndex:T.rowIndex,colId:s}):!0)},F=n=>{if(!M.value)return;let s=r.beforeUnloadMessage??"\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002";return n.preventDefault(),n.returnValue=s,s};return r.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",F),be(()=>{w?.(),w=null,r.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",F)}),{changes:h,dirtyRowIds:o,dirty:M,saving:c,saveError:y,lastSaveResult:v,saveIssues:E,failedRowIds:x,save:p,saveDetailed:g,clearSaveIssues:t,resolveConflict:R,rollback:U,markSaved:b,reveal:D,refresh:m}}import{computed as le,isRef as we,nextTick as J,onScopeDispose as Re,ref as P,shallowRef as q,watch as W}from"vue";import{getByPath as De,normalizeAdvancedFilterModel as ne}from"@agile-team/mach-table";function re(e){return typeof e=="function"?e():we(e)?e.value:e}function X(e,r){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):r}function Ce(e){return(e instanceof DOMException||typeof e=="object"&&e!=null&&"name"in e)&&e.name==="AbortError"}function Y(e){let r=q([]),h=P(!1),o=q(null),c=P(X(e.initialPage,1)),y=P(X(e.pageSize,20)),v=P(0),M=q([]),E=q({}),x=q(null),w=P([]),m=q([]),g=new Set,p=new Set,t=new Map,R=e.quickFilterText??P(null),U=e.selectionScope??"preserve",b=e.mode!=="manual",D=P(!1),F=P(0),n=[...new Set((e.pageSizeOptions??[10,20,50,100]).map(a=>X(a,0)).filter(Boolean))];n.includes(y.value)||n.push(y.value),n.sort((a,l)=>a-l);let s=null,f=null,d=0,T=null,S=!1,I=!1,V=!1,C=a=>{let l=typeof e.rowKey=="function"?e.rowKey(a):De(a,e.rowKey);if(l==null||String(l).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(e.rowKey)}" returned an empty value.`);return String(l)},k=()=>{V=!0,w.value=D.value?[]:[...g],V=!1;let a=D.value?[...t.keys()]:[...g];m.value=a.flatMap(l=>{let i=t.get(l);return i===void 0||p.has(l)?[]:[i]}),F.value++},L=a=>D.value?!p.has(a):g.has(a),G=()=>{if(!s||s.isDestroyed())return;let a=r.value.filter(l=>L(C(l)));I=!0;try{s.selection.setRows(a,!0)}finally{I=!1}},_=()=>{d++,f?.abort(),f=null,T!=null&&clearTimeout(T),T=null,h.value=!1},ee=(a,l)=>a.signal.aborted||l!==d,oe=a=>{if(!a||!Array.isArray(a.rows)||!Number.isFinite(a.total)||a.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},ie=async(a,l,i)=>{if(ee(l,i))return;oe(a);let u=[...a.rows];for(let O of u)C(O);r.value=u,v.value=Math.floor(a.total);for(let O of r.value){let H=C(O);L(H)?t.set(H,O):t.delete(H)}k(),e.onSuccess?.(a),await J(),G()},se=(a,l,i)=>{ee(l,i)||Ce(a)||(o.value=a??new Error,e.onError?.(o.value))},Q=async()=>{T!=null&&clearTimeout(T),T=null,f?.abort();let a=new AbortController;f=a;let l=++d;h.value=!0,o.value=null,e.keepPreviousData===!1&&(r.value=[]);try{let i=await e.request({page:c.value,pageSize:y.value,query:re(e.query),sortModel:M.value.map(u=>({...u})),filterModel:{...E.value},advancedFilterModel:ne(x.value),quickFilterText:R.value,signal:a.signal});await ie(i,a,l)}catch(i){se(i,a,l)}finally{l===d&&(h.value=!1,f===a&&(f=null))}},K=a=>{a&&(c.value=1),T!=null&&clearTimeout(T),f&&(d++,f.abort(),f=null,h.value=!1);let l=Math.max(0,e.debounceMs??0);if(l===0){Q();return}T=setTimeout(()=>{Q()},l)},ue=a=>{s=a.api,J(G)},de=a=>{S||a.page===c.value&&a.pageSize===y.value||(c.value=a.page,y.value=a.pageSize,b&&Q())},ce=a=>{S||(M.value=a.sortModel.map(l=>({...l})),b?K(!0):c.value=1)},fe=a=>{if(S)return;E.value={...a.filterModel},x.value=ne(a.advancedFilterModel);let l=a.api.filtering.getQuickText();if(R.value!==l){S=!0;try{R.value=l}finally{S=!1}}e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},ve=a=>{if(I)return;let l=new Set(r.value.map(C)),i=new Set(a.selectedRows.map(C));if(D.value){for(let u of l)i.has(u)?p.delete(u):(p.add(u),t.delete(u));for(let u of a.selectedRows)t.set(C(u),u);k();return}if(U==="page")g.clear(),t.clear();else for(let u of l)g.delete(u),t.delete(u);for(let u of a.selectedRows){let O=C(u);g.add(O),t.set(O,u)}k()},ge=le(()=>({rowData:r.value,loading:h.value,rowKey:C,manualSorting:!0,manualFiltering:!0,advancedFilterModel:x.value,quickFilterText:R.value,error:o.value,overlayErrorTemplate:o.value?()=>e.errorOverlay?.({error:o.value,retry:Q})??"Remote request failed. Please retry.":void 0,overlayNoRowsTemplate:e.emptyOverlay,pagination:{mode:"server",page:c.value,pageSize:y.value,pageSizeOptions:n,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:ue,onPaginationChanged:de,onSortChanged:ce,onFilterChanged:fe,onSelectionChanged:ve})),Te=async(a={})=>{a.resetPage&&(c.value=1),await Q()},he=async()=>{S=!0;try{c.value=1,M.value=[],E.value={},x.value=null,R.value=null,A(),s?.sorting.setModel(null),s?.filtering.setModel(null),s?.filtering.setAdvancedModel(null),s?.filtering.setQuickText(null),await J()}finally{S=!1}await Q()},A=()=>{D.value=!1,g.clear(),p.clear(),t.clear(),k(),I=!0;try{s?.selection.clear()}finally{I=!1}},ye=()=>{D.value=!0,g.clear(),p.clear(),t.clear();for(let a of r.value)t.set(C(a),a);k(),G()},pe=a=>{g.clear(),p.clear(),t.clear(),D.value=a.mode==="allMatching";let l=a.mode==="allMatching"?a.excludedKeys:a.selectedKeys;for(let i of l.map(String))a.mode==="allMatching"?p.add(i):g.add(i);for(let i of r.value){let u=C(i);L(u)&&t.set(u,i)}k(),G()},me=le(()=>(F.value,D.value?{mode:"allMatching",excludedKeys:[...p]}:{mode:"explicit",selectedKeys:[...g]}));return W(()=>re(e.query),()=>{e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},{deep:!0,immediate:b&&e.immediate!==!1}),W(R,()=>{S||(e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1)},{flush:"sync"}),W(w,a=>{if(V)return;D.value=!1,p.clear();let l=new Set(a.map(String));g.clear();for(let i of l)g.add(i);for(let i of[...t.keys()])l.has(i)||t.delete(i);for(let i of r.value){let u=C(i);l.has(u)&&t.set(u,i)}G(),k()},{deep:!0,flush:"sync"}),Re(()=>{_(),s=null}),{rows:r,loading:h,error:o,page:c,pageSize:y,total:v,sortModel:M,filterModel:E,advancedFilterModel:x,selectedKeys:w,selectedRows:m,selectionState:me,bindings:ge,reload:Te,retry:Q,reset:he,abort:_,clearSelection:A,selectAllMatching:ye,applySelectionState:pe}}import{computed as B,isRef as Ee,onScopeDispose as xe,ref as Pe,shallowRef as ke,watch as Z}from"vue";import{createMachTableCommands as Qe}from"@agile-team/mach-table";function Oe(e={}){let r=ae(),h=Pe(e.initialSearch??e.config?.quickFilterText??""),o=e.query?Y({...e.query,quickFilterText:e.query.quickFilterText??B(()=>h.value||null)}):null,c=$(r,e.editing),y=ke([]),v=null,M=()=>{y.value=o?.selectedRows.value??r.api.value?.selection.getRows()??[]};Z(r.api,t=>{v?.(),v=null,t&&!t.isDestroyed()&&(v=t.on("selectionChanged",M)),M()},{immediate:!0}),o&&Z(o.selectedRows,M,{deep:!1});let E=async()=>{if(o)await o.reload();else{let t=r.api.value;t?.rows.isRemote()?await t.rows.reload():t?.view.refreshCells()}},x=Qe({getApi:()=>r.api.value,reload:E}),w=B(()=>{let t={...e.config,...o?.bindings.value??{},quickFilterText:h.value||null},R=z(e.loading),U=z(e.theme),b=z(e.editMode);return R!==void 0&&(t.loading=R),U!==void 0&&(t.theme=U),b!==void 0&&(t.editType=b==="row"?"fullRow":"cell",t.editableIndicator=b==="cell"?"hover":"none"),e.onCellValueChanged&&(t.onCellValueChanged=e.onCellValueChanged),e.onRowEditingStopped&&(t.onRowEditingStopped=e.onRowEditingStopped),e.onGridError&&(t.onGridError=e.onGridError),t}),m=B(()=>{if(!o)return y.value.length;let t=o.selectionState.value;return t.mode==="allMatching"?Math.max(0,o.total.value-t.excludedKeys.length):t.selectedKeys.length}),g=B(()=>z(e.loading)===!0||o?.loading.value===!0||c.saving.value),p=B(()=>o?.error.value??c.saveError.value??null);return Z(h,t=>{o||x.search(t||null)}),xe(()=>{v?.(),v=null}),{table:r,query:o,editing:c,bindings:w,search:h,selectedRows:y,selectedCount:m,busy:g,error:p,commands:x,reload:E}}function z(e){return typeof e=="function"?e():Ee(e)?e.value:e}export{Oe as useMachTableController,$ as useMachTableEditing,Y as useMachTableQuery};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/mach-table-vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.2",
|
|
4
4
|
"description": "Official Vue 3 adapter for the MachTable enterprise data grid",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"**/*.css"
|
|
119
119
|
],
|
|
120
120
|
"dependencies": {
|
|
121
|
-
"@agile-team/mach-table": "0.
|
|
121
|
+
"@agile-team/mach-table": "0.29.2"
|
|
122
122
|
},
|
|
123
123
|
"peerDependencies": {
|
|
124
124
|
"vue": ">=3.2.0"
|
|
@@ -132,5 +132,5 @@
|
|
|
132
132
|
"test": "vitest run",
|
|
133
133
|
"test:coverage": "vitest run --coverage"
|
|
134
134
|
},
|
|
135
|
-
"readme": "<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/ChenyCHENYU/MachTable/main/assets/mach-table-logo.svg\" alt=\"MachTable\" width=\"760\" />\n</p>\n\n# @agile-team/mach-table-vue\n\nMachTable 0.28 的官方 Vue 3 适配包。一个依赖即可获得 Core、泛型 `<MachTable>`、原生 slots、应用/路由配置、按需工作流、异步组件边界和自动生命周期清理。\n\n```bash\npnpm add @agile-team/mach-table-vue\n```\n\n应用入口只引入一次样式:\n\n```ts\nimport \"@agile-team/mach-table-vue/styles.css\";\n```\n\n## 局部接入\n\n```vue\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport {
|
|
135
|
+
"readme": "<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/ChenyCHENYU/MachTable/main/assets/mach-table-logo.svg\" alt=\"MachTable\" width=\"760\" />\n</p>\n\n# @agile-team/mach-table-vue\n\nMachTable 0.28 的官方 Vue 3 适配包。一个依赖即可获得 Core、泛型 `<MachTable>`、原生 slots、应用/路由配置、按需工作流、异步组件边界和自动生命周期清理。\n\n```bash\npnpm add @agile-team/mach-table-vue\n```\n\n应用入口只引入一次样式:\n\n```ts\nimport \"@agile-team/mach-table-vue/styles.css\";\n```\n\n## 局部接入\n\n```vue\n<script setup lang=\"ts\">\nimport { h, ref } from \"vue\";\nimport {\n MachTable,\n defineVueColumns,\n defineVueTableConfig,\n indexColumn,\n useMachTable,\n} from \"@agile-team/mach-table-vue\";\n\ninterface Row { id: string; name: string; status: \"enabled\" | \"disabled\" }\nconst table = useMachTable<Row>();\nconst rows = ref<Row[]>([{ id: \"1\", name: \"MachTable\", status: \"enabled\" }]);\nconst columns = defineVueColumns<Row>([\n indexColumn({ headerName: \"序号\" }),\n { field: \"name\", flex: 1, editable: true },\n {\n field: \"status\",\n headerName: \"状态\",\n render: (row) => h(\"span\", { class: `status-${row.status}` }, row.status === \"enabled\" ? \"启用\" : \"停用\")\n }\n]);\nconst tableConfig = defineVueTableConfig<Row>({\n rowKey: \"id\",\n enableColumnResize: true,\n stripedRows: true,\n persistence: { key: \"customers:list\", sections: [\"columns\"] }\n});\n</script>\n\n<template>\n <div style=\"height: 520px\">\n <MachTable\n v-bind=\"tableConfig\"\n :ref=\"table.ref\"\n :row-data=\"rows\"\n :column-defs=\"columns\"\n />\n </div>\n</template>\n```\n\n业务列优先用 `defineVueColumns()` 的 `render(row, index, params)` 返回 VNode;它保留 Vue 应用上下文、支持原位刷新,并遵循全局、表格和单列对齐配置。复杂页面编排仍可使用 `#cell-*` 具名插槽,具名插槽会显式覆盖同列 `render`。多个稳定表格参数推荐放进页面 `data.ts` 或共享配置模块,模板通过一次 `v-bind=\"tableConfig\"` 注入;`rowData`、`columnDefs` 和实例 `ref` 保持显式,便于看清数据来源。\n\n未声明 `#loading` / `#empty` 时会直接使用 Core 的紧凑骨架加载态与插画空态;只有产品确实需要品牌化呈现时才提供 slot,避免每个页面重复维护同类状态组件。\n\n单元格编辑在用户点击对勾/取消或执行 Enter、Escape、Tab 键盘命令前保持挂载,焦点变化和中文输入法组合输入不会提前提交。整行事务请设置 `edit-type=\"fullRow\"` 并增加 `rowActionsColumn()`,该操作列会自动切换编辑、保存和取消状态。\n\n## 全局接入\n\n表格页面较多时,全局注册一次,页面模板直接使用 `<MachTable>`:\n\n```ts\nimport { createApp } from \"vue\";\nimport { MachTablePlugin } from \"@agile-team/mach-table-vue\";\nimport machTableConfig from \"@/config/mach-table.config\";\n\ncreateApp(App).use(MachTablePlugin, machTableConfig).mount(\"#app\");\n```\n\n需要减少首屏代码时改用异步全局插件:\n\n```ts\nimport AsyncMachTablePlugin, { preloadMachTable } from \"@agile-team/mach-table-vue/async\";\n\napp.use(AsyncMachTablePlugin, machTableConfig);\nvoid preloadMachTable(); // 可选:路由 hover 时预取\n```\n\n推荐把约定集中到独立文件:\n\n```ts\n// src/config/mach-table.config.ts\nimport { defineMachTableConfig, defineMachTablePreset } from \"@agile-team/mach-table-vue\";\n\nexport default defineMachTableConfig({\n defaults: {\n size: \"compact\",\n columnLayout: \"fit\",\n enableColumnResize: true,\n defaultColDef: { sortable: true, filter: true, resizable: true }\n },\n defaultPreset: \"list\",\n presets: {\n list: defineMachTablePreset({ stripedRows: true }),\n crud: defineMachTablePreset({ rowSelection: \"multiple\", editType: \"fullRow\" })\n }\n});\n```\n\n布局或路由可用响应式 `provideMachTableConfig()` 叠加配置,表格 props 始终拥有最高优先级。\n\n## 按需子入口\n\n```ts\nimport { useMachTableQuery, useMachTableEditing } from \"@agile-team/mach-table-vue/workflows\";\nimport { MachTableToolbar } from \"@agile-team/mach-table-vue/ui\";\nimport { vueCellRenderer } from \"@agile-team/mach-table-vue/adapters\";\nimport { createElementPlusEditors } from \"@agile-team/mach-table-vue/editors\";\nimport { createWorkerDataProcessor } from \"@agile-team/mach-table-vue/worker\";\n```\n\n- `/workflows`:请求取消、防过期覆盖、服务端分页、跨页选择、脏数据和冲突保存;`reset()` 清空全部表格过滤且只请求一次。\n- `/ui`:可选标准工具栏;需要全局组件时另行 `app.use(MachTableUiPlugin)`,其全局组件类型也只在导入该子入口后生效。\n- `/adapters`:自定义 Vue renderer/editor/detail/overlay 桥接。\n- `/editors`:可选 Element Plus 编辑器,Element Plus 由宿主注入。\n- `/worker`:大型本地过滤/排序的独立 Worker 能力。\n\n该包自动依赖 `@agile-team/mach-table` 并重导出 Core 类型;宿主只需提供 `vue >= 3.2`。\n\n文档:[Vue 指南](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/vue.md) · [企业接入](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/enterprise-integration.md) · [配置中心](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/configuration.md)\n\nSource-available © ChenyCHENYU (Agile Team). 任何使用均须事先取得书面授权。详见 [LICENSE](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSE) 与[授权流程](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSING.md)。\n"
|
|
136
136
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-2ANGCJOO.js";import"./chunk-7MRR4IDI.js";import"./chunk-SQVY5G55.js";export{a as MachTable};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkJ3SALTBKcjs = require('./chunk-J3SALTBK.cjs');require('./chunk-7LXDVLDD.cjs');require('./chunk-XECIDGIZ.cjs');exports.MachTable = _chunkJ3SALTBKcjs.a;
|
package/dist/chunk-7LXDVLDD.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _machtable = require('@agile-team/mach-table');var _adapter = require('@agile-team/mach-table/adapter');var _vue = require('vue');var o=Symbol("mach-table-config"),f=_adapter.normalizeMachTableConfig.call(void 0, );function g(e){return typeof e=="function"?e():_vue.isRef.call(void 0, e)?e.value:e}function u(e){return _vue.shallowRef.call(void 0, _adapter.normalizeMachTableConfig.call(void 0, e))}function y(e){let c=_vue.inject.call(void 0, o,_vue.shallowRef.call(void 0, f)),i=_vue.computed.call(void 0, ()=>_adapter.mergeMachTableConfig.call(void 0, c.value,g(e)));return _vue.provide.call(void 0, o,i),i}function s(){return _vue.inject.call(void 0, o,_vue.shallowRef.call(void 0, f))}exports.a = _adapter.resolveMachTableGridOptions; exports.b = o; exports.c = u; exports.d = y; exports.e = s;
|
package/dist/chunk-7MRR4IDI.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{defineMachTableConfig as p}from"@agile-team/mach-table";import{mergeMachTableConfig as t,normalizeMachTableConfig as a,resolveMachTableGridOptions as R}from"@agile-team/mach-table/adapter";import{computed as r,inject as l,isRef as b,provide as h,shallowRef as n}from"vue";var o=Symbol("mach-table-config"),f=a();function g(e){return typeof e=="function"?e():b(e)?e.value:e}function u(e){return n(a(e))}function y(e){let c=l(o,n(f)),i=r(()=>t(c.value,g(e)));return h(o,i),i}function s(){return l(o,n(f))}export{R as a,o as b,u as c,y as d,s as e};
|
package/dist/chunk-SQVY5G55.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as m,render as p,renderSlot as P,getCurrentInstance as g,shallowReactive as C}from"vue";function s(t){if(t)return t;try{return g()?.appContext}catch{return}}function R(t,e,n,r){let o=m({setup:()=>()=>m(t,{...e})});return r&&(o.appContext=r),p(o,n),()=>p(null,n)}function c(t,e,n,r,a=!0){let d=m({name:"MachTableSlot",setup:()=>()=>P({default:t},"default",e())});r&&(d.appContext=r);let l=!1,u=()=>{l||p(d,n)};return a?queueMicrotask(u):u(),()=>{l=!0,p(null,n)}}function E(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-cell-vue",a.style.width="100%";let o=C({...r}),d=R(t,o,a,n),l=!1;return{el:a,refresh:u=>(Object.assign(o,u),!0),destroy:()=>{l||(l=!0,window.setTimeout(d,0))}}}}function A(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.style.height="100%";let o=R(t,r,a,n),d=!1;return{el:a,destroy:()=>{d||(d=!0,o())}}}}function x(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-cell-vue mach-cell-vue--slot",a.style.width="100%";let o=C({...r}),d=c(t,()=>o,a,n);return{el:a,refresh:l=>(Object.assign(o,l),!0),destroy:d}}}function h(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-header-vue-slot";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function S(t,e){let n=s(e?.appContext);return r=>{let a=C({value:r.value}),o=document.createElement("div");o.className="mach-cell-vue mach-cell-vue--editor";let l=c(t,()=>({...r,value:a.value,setValue:u=>{a.value=u},commit:()=>{r.api.editing.stop()},cancel:()=>{r.api.editing.stop({cancel:!0})}}),o,n,!1);return{el:o,getValue:()=>a.value,focus:()=>{o.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])")?.focus()},destroy:l}}}function D(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-detail-vue-slot",a.style.height="100%";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function i(t,e){let n=s(e?.appContext);return()=>{let r=document.createElement("div");r.className="mach-overlay-vue-slot";let a=c(t,()=>({}),r,n);return{el:r,destroy:a}}}function T(t,e,n){return t[`${e}-${n}`]??t[`${e}-${n.replace(/[.\s]+/g,"-")}`]}function y(t,e,n){return t.map((r,a)=>{if(Array.isArray(r.children)){let v=r;return{...v,children:y(v.children,e,n)}}let o=r,d=o.colId??o.field??`col_${a}`,l=T(e,"cell",d)??(d==="op"?e.actions:void 0)??e.cell,u=T(e,"header",d)??e.header,f=T(e,"editor",d)??e.editor;return{...o,...l?{cellRenderer:x(l,{appContext:n})}:{},...u?{headerComponent:h(u,{appContext:n})}:{},...f?{cellEditor:S(f,{appContext:n})}:{}}})}function O(t,e,n){let r=t.columnDefs?y(t.columnDefs,e,n):t.columnDefs;return{...t,columnDefs:r,...e.detail&&!t.detailRowRenderer?{detailRowRenderer:D(e.detail,{appContext:n})}:{},...e.loading?{overlayLoadingTemplate:i(e.loading,{appContext:n})}:{},...e.empty?{overlayNoRowsTemplate:i(e.empty,{appContext:n})}:{}}}function G(t,e){let n,r,a=t.detail?D(t.detail,{appContext:e}):void 0,o=t.loading?i(t.loading,{appContext:e}):void 0,d=t.empty?i(t.empty,{appContext:e}):void 0;return l=>(l.columnDefs!==n&&(n=l.columnDefs,r=l.columnDefs?y(l.columnDefs,t,e):l.columnDefs),{...l,columnDefs:r,...a&&!l.detailRowRenderer?{detailRowRenderer:a}:{},...o?{overlayLoadingTemplate:o}:{},...d?{overlayNoRowsTemplate:d}:{}})}export{E as a,A as b,x as c,h as d,S as e,D as f,i as g,O as h,G as i};
|
package/dist/chunk-XECIDGIZ.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _vue = require('vue');function s(t){if(t)return t;try{return _optionalChain([_vue.getCurrentInstance.call(void 0, ), 'optionalAccess', _ => _.appContext])}catch (e2){return}}function R(t,e,n,r){let o=_vue.h.call(void 0, {setup:()=>()=>_vue.h.call(void 0, t,{...e})});return r&&(o.appContext=r),_vue.render.call(void 0, o,n),()=>_vue.render.call(void 0, null,n)}function c(t,e,n,r,a=!0){let d=_vue.h.call(void 0, {name:"MachTableSlot",setup:()=>()=>_vue.renderSlot.call(void 0, {default:t},"default",e())});r&&(d.appContext=r);let l=!1,u=()=>{l||_vue.render.call(void 0, d,n)};return a?queueMicrotask(u):u(),()=>{l=!0,_vue.render.call(void 0, null,n)}}function E(t,e){let n=s(_optionalChain([e, 'optionalAccess', _2 => _2.appContext]));return r=>{let a=document.createElement("div");a.className="mach-cell-vue",a.style.width="100%";let o=_vue.shallowReactive.call(void 0, {...r}),d=R(t,o,a,n),l=!1;return{el:a,refresh:u=>(Object.assign(o,u),!0),destroy:()=>{l||(l=!0,window.setTimeout(d,0))}}}}function A(t,e){let n=s(_optionalChain([e, 'optionalAccess', _3 => _3.appContext]));return r=>{let a=document.createElement("div");a.style.height="100%";let o=R(t,r,a,n),d=!1;return{el:a,destroy:()=>{d||(d=!0,o())}}}}function x(t,e){let n=s(_optionalChain([e, 'optionalAccess', _4 => _4.appContext]));return r=>{let a=document.createElement("div");a.className="mach-cell-vue mach-cell-vue--slot",a.style.width="100%";let o=_vue.shallowReactive.call(void 0, {...r}),d=c(t,()=>o,a,n);return{el:a,refresh:l=>(Object.assign(o,l),!0),destroy:d}}}function h(t,e){let n=s(_optionalChain([e, 'optionalAccess', _5 => _5.appContext]));return r=>{let a=document.createElement("div");a.className="mach-header-vue-slot";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function S(t,e){let n=s(_optionalChain([e, 'optionalAccess', _6 => _6.appContext]));return r=>{let a=_vue.shallowReactive.call(void 0, {value:r.value}),o=document.createElement("div");o.className="mach-cell-vue mach-cell-vue--editor";let l=c(t,()=>({...r,value:a.value,setValue:u=>{a.value=u},commit:()=>{r.api.editing.stop()},cancel:()=>{r.api.editing.stop({cancel:!0})}}),o,n,!1);return{el:o,getValue:()=>a.value,focus:()=>{_optionalChain([o, 'access', _7 => _7.querySelector, 'call', _8 => _8("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])"), 'optionalAccess', _9 => _9.focus, 'call', _10 => _10()])},destroy:l}}}function D(t,e){let n=s(_optionalChain([e, 'optionalAccess', _11 => _11.appContext]));return r=>{let a=document.createElement("div");a.className="mach-detail-vue-slot",a.style.height="100%";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function i(t,e){let n=s(_optionalChain([e, 'optionalAccess', _12 => _12.appContext]));return()=>{let r=document.createElement("div");r.className="mach-overlay-vue-slot";let a=c(t,()=>({}),r,n);return{el:r,destroy:a}}}function T(t,e,n){return _nullishCoalesce(t[`${e}-${n}`], () => (t[`${e}-${n.replace(/[.\s]+/g,"-")}`]))}function y(t,e,n){return t.map((r,a)=>{if(Array.isArray(r.children)){let v=r;return{...v,children:y(v.children,e,n)}}let o=r,d=_nullishCoalesce(_nullishCoalesce(o.colId, () => (o.field)), () => (`col_${a}`)),l=_nullishCoalesce(_nullishCoalesce(T(e,"cell",d), () => ((d==="op"?e.actions:void 0))), () => (e.cell)),u=_nullishCoalesce(T(e,"header",d), () => (e.header)),f=_nullishCoalesce(T(e,"editor",d), () => (e.editor));return{...o,...l?{cellRenderer:x(l,{appContext:n})}:{},...u?{headerComponent:h(u,{appContext:n})}:{},...f?{cellEditor:S(f,{appContext:n})}:{}}})}function O(t,e,n){let r=t.columnDefs?y(t.columnDefs,e,n):t.columnDefs;return{...t,columnDefs:r,...e.detail&&!t.detailRowRenderer?{detailRowRenderer:D(e.detail,{appContext:n})}:{},...e.loading?{overlayLoadingTemplate:i(e.loading,{appContext:n})}:{},...e.empty?{overlayNoRowsTemplate:i(e.empty,{appContext:n})}:{}}}function G(t,e){let n,r,a=t.detail?D(t.detail,{appContext:e}):void 0,o=t.loading?i(t.loading,{appContext:e}):void 0,d=t.empty?i(t.empty,{appContext:e}):void 0;return l=>(l.columnDefs!==n&&(n=l.columnDefs,r=l.columnDefs?y(l.columnDefs,t,e):l.columnDefs),{...l,columnDefs:r,...a&&!l.detailRowRenderer?{detailRowRenderer:a}:{},...o?{overlayLoadingTemplate:o}:{},...d?{overlayNoRowsTemplate:d}:{}})}exports.a = E; exports.b = A; exports.c = x; exports.d = h; exports.e = S; exports.f = D; exports.g = i; exports.h = O; exports.i = G;
|