@agile-team/mach-table-vue 0.23.0 → 0.25.0

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.
Files changed (56) hide show
  1. package/README.md +37 -111
  2. package/dist/MachTable-6IGIPSES.js +1 -0
  3. package/dist/MachTable-EL36L7JW.cjs +1 -0
  4. package/dist/{MachTable-DH0offab.d.cts → MachTable-jS92BIXm.d.cts} +3 -6
  5. package/dist/{MachTable-DH0offab.d.ts → MachTable-jS92BIXm.d.ts} +3 -6
  6. package/dist/adapters.cjs +1 -0
  7. package/dist/adapters.d.cts +53 -0
  8. package/dist/adapters.d.ts +53 -0
  9. package/dist/adapters.js +1 -0
  10. package/dist/async.cjs +1 -1
  11. package/dist/async.d.cts +3 -3
  12. package/dist/async.d.ts +3 -3
  13. package/dist/async.js +1 -1
  14. package/dist/chunk-2ANGCJOO.js +1 -0
  15. package/dist/chunk-7LXDVLDD.cjs +1 -0
  16. package/dist/chunk-7MRR4IDI.js +1 -0
  17. package/dist/chunk-EGEQGM3D.cjs +1 -0
  18. package/dist/chunk-J3SALTBK.cjs +1 -0
  19. package/dist/chunk-SQVY5G55.js +1 -0
  20. package/dist/chunk-XECIDGIZ.cjs +1 -0
  21. package/dist/chunk-Y4S6TCE5.js +1 -0
  22. package/dist/chunk-YQIRPQHT.cjs +1 -0
  23. package/dist/chunk-YTEW56VQ.js +1 -0
  24. package/dist/globalRegistration-Bsdv9yBs.d.ts +11 -0
  25. package/dist/globalRegistration-CRo5XbUX.d.cts +11 -0
  26. package/dist/index.cjs +1 -1
  27. package/dist/index.d.cts +7 -60
  28. package/dist/index.d.ts +7 -60
  29. package/dist/index.js +1 -1
  30. package/dist/ui.cjs +1 -1
  31. package/dist/ui.d.cts +101 -4
  32. package/dist/ui.d.ts +101 -4
  33. package/dist/ui.js +1 -1
  34. package/dist/useMachTable-DXGZxgIJ.d.ts +12 -0
  35. package/dist/useMachTable-YH4Xj6dS.d.cts +12 -0
  36. package/dist/workflows.cjs +1 -1
  37. package/dist/workflows.d.cts +139 -4
  38. package/dist/workflows.d.ts +139 -4
  39. package/dist/workflows.js +1 -1
  40. package/package.json +13 -3
  41. package/dist/MachTable-A3J2IU6F.cjs +0 -1
  42. package/dist/MachTable-JB3IUGBZ.js +0 -1
  43. package/dist/MachTableToolbar-CDkTtitl.d.cts +0 -97
  44. package/dist/MachTableToolbar-CDkTtitl.d.ts +0 -97
  45. package/dist/chunk-2YPTQYP3.js +0 -1
  46. package/dist/chunk-AVPWFS7M.js +0 -1
  47. package/dist/chunk-D3AAW636.cjs +0 -1
  48. package/dist/chunk-FZLCBKUV.js +0 -1
  49. package/dist/chunk-H37MDBNW.js +0 -1
  50. package/dist/chunk-QHFBQ37M.cjs +0 -1
  51. package/dist/chunk-Z24LHO3W.cjs +0 -1
  52. package/dist/chunk-ZIBU265Z.cjs +0 -1
  53. package/dist/globalRegistration-BhAR-B5k.d.cts +0 -19
  54. package/dist/globalRegistration-DTWLNxPI.d.ts +0 -19
  55. package/dist/workflows-CyXKgNRx.d.ts +0 -145
  56. package/dist/workflows-DEOJrSuj.d.cts +0 -145
package/dist/index.d.ts CHANGED
@@ -1,72 +1,19 @@
1
- export { a as MachTable, M as MachTableVueComponent, b as MachTableVueExposed, c as MachTableVueProps, R as RobotGrid, d as RobotGridVueProps } from './MachTable-DH0offab.js';
2
- import { App, Slot, AppContext, Component, Slots, InjectionKey, Ref } from 'vue';
3
- import { M as MachTablePluginOptions } from './globalRegistration-DTWLNxPI.js';
4
- import { CellEditorParams, CellRendererParams, CellEditorFactory, CellRendererFn, DetailRowRendererParams, ICellRendererResult, HeaderComponentParams, OverlayTemplate, GridOptions, ResolvedMachTableConfig, MachTableRuntimeConfig } from '@agile-team/mach-table';
1
+ export { a as MachTable, M as MachTableVueComponent, b as MachTableVueExposed, c as MachTableVueProps } from './MachTable-jS92BIXm.js';
2
+ import { App, InjectionKey, Ref } from 'vue';
3
+ import { M as MachTablePluginOptions } from './globalRegistration-Bsdv9yBs.js';
4
+ export { U as UseMachTableReturn, u as useMachTable } from './useMachTable-DXGZxgIJ.js';
5
+ import { MachTableRuntimeConfig } from '@agile-team/mach-table';
5
6
  export * from '@agile-team/mach-table';
6
- export { M as MachTablePageRequest, a as MachTablePageResult, b as MachTableQuerySource, c as MachTableRemoteSelectionState, U as UseMachTableControllerOptions, d as UseMachTableControllerReturn, e as UseMachTableEditingOptions, f as UseMachTableEditingReturn, g as UseMachTableQueryOptions, h as UseMachTableQueryReturn, i as UseMachTableReturn, u as useMachTable, j as useMachTableController, k as useMachTableEditing, l as useMachTableQuery } from './workflows-CyXKgNRx.js';
7
- import './MachTableToolbar-CDkTtitl.js';
7
+ import { ResolvedMachTableConfig } from '@agile-team/mach-table/adapter';
8
8
 
9
9
  declare const MachTablePlugin: {
10
10
  install(app: App, options?: MachTablePluginOptions): void;
11
11
  };
12
12
 
13
- type VueCellRendererProps<TData = any, TValue = any> = CellRendererParams<TData, TValue>;
14
- declare function vueCellRenderer<TData = any, TValue = any>(component: Component, options?: {
15
- appContext?: AppContext;
16
- }): CellRendererFn;
17
- declare function vueDetailRenderer<TData = any>(component: Component, options?: {
18
- appContext?: AppContext;
19
- }): (params: DetailRowRendererParams<TData>) => {
20
- el: HTMLElement;
21
- destroy?: () => void;
22
- };
23
- /** Internal/public bridge used by automatic `#cell-*` Vue slots. */
24
- declare function vueCellSlotRenderer<TData = any, TValue = any>(slot: Slot, options?: {
25
- appContext?: AppContext;
26
- }): CellRendererFn;
27
- declare function vueHeaderSlotRenderer<TData = any>(slot: Slot, options?: {
28
- appContext?: AppContext;
29
- }): (params: HeaderComponentParams<TData>) => ICellRendererResult;
30
- interface VueCellEditorSlotProps<TData = any, TValue = any> extends CellEditorParams<TData, TValue> {
31
- value: TValue;
32
- setValue(value: TValue): void;
33
- commit(): void;
34
- cancel(): void;
35
- }
36
- declare function vueCellEditorSlot<TData = any, TValue = any>(slot: Slot, options?: {
37
- appContext?: AppContext;
38
- }): CellEditorFactory;
39
- declare function vueDetailSlotRenderer<TData = any>(slot: Slot, options?: {
40
- appContext?: AppContext;
41
- }): (params: DetailRowRendererParams<TData>) => ICellRendererResult;
42
- declare function vueOverlaySlot(slot: Slot, options?: {
43
- appContext?: AppContext;
44
- }): OverlayTemplate;
45
-
46
- interface MachTableVueSlots<TData = any> {
47
- cell?: (props: CellRendererParams<TData>) => any;
48
- header?: (props: HeaderComponentParams<TData>) => any;
49
- editor?: (props: VueCellEditorSlotProps<TData>) => any;
50
- detail?: (props: DetailRowRendererParams<TData>) => any;
51
- loading?: () => any;
52
- empty?: () => any;
53
- actions?: (props: CellRendererParams<TData>) => any;
54
- [name: `cell-${string}`]: ((props: CellRendererParams<TData>) => any) | undefined;
55
- [name: `header-${string}`]: ((props: HeaderComponentParams<TData>) => any) | undefined;
56
- [name: `editor-${string}`]: ((props: CellEditorParams<TData>) => any) | undefined;
57
- }
58
- declare function applyVueSlots<TData>(options: GridOptions<TData>, slots: Slots, appContext?: AppContext): GridOptions<TData>;
59
- /** Creates a stable enhancer so unrelated reactive prop updates do not rebuild columns. */
60
- declare function createVueSlotEnhancer<TData>(slots: Slots, appContext?: AppContext): (options: GridOptions<TData>) => GridOptions<TData>;
61
-
62
- declare const MACH_TABLE_DEFAULTS_KEY: InjectionKey<Partial<GridOptions<any>>>;
63
13
  declare const MACH_TABLE_CONFIG_KEY: InjectionKey<Readonly<Ref<ResolvedMachTableConfig>>>;
64
14
  type MachTableConfigSource = MachTableRuntimeConfig | Readonly<Ref<MachTableRuntimeConfig>> | (() => MachTableRuntimeConfig);
65
15
  /** Provides route/layout-scoped defaults, presets and diagnostics reactively. */
66
16
  declare function provideMachTableConfig(source: MachTableConfigSource): Readonly<Ref<ResolvedMachTableConfig>>;
67
- /** Provides route/layout-scoped defaults. Per-table props always take precedence. */
68
- declare function provideMachTableDefaults<TData>(defaults: Partial<GridOptions<TData>> | Readonly<Ref<Partial<GridOptions<TData>>>> | (() => Partial<GridOptions<TData>>)): void;
69
- declare function useMachTableDefaults<TData>(): Partial<GridOptions<TData>>;
70
17
  declare function useMachTableConfig(): Readonly<Ref<ResolvedMachTableConfig>>;
71
18
 
72
- export { MACH_TABLE_CONFIG_KEY, MACH_TABLE_DEFAULTS_KEY, type MachTableConfigSource, MachTablePlugin, MachTablePluginOptions, type MachTableVueSlots, type VueCellEditorSlotProps, type VueCellRendererProps, applyVueSlots, createVueSlotEnhancer, MachTablePlugin as default, provideMachTableConfig, provideMachTableDefaults, useMachTableConfig, useMachTableDefaults, vueCellEditorSlot, vueCellRenderer, vueCellSlotRenderer, vueDetailRenderer, vueDetailSlotRenderer, vueHeaderSlotRenderer, vueOverlaySlot };
19
+ export { MACH_TABLE_CONFIG_KEY, type MachTableConfigSource, MachTablePlugin, MachTablePluginOptions, MachTablePlugin as default, provideMachTableConfig, useMachTableConfig };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a as r}from"./chunk-H37MDBNW.js";import{a as y,b as C,c as R,d as S}from"./chunk-FZLCBKUV.js";import{a as s,b,c as T,d as M,e as h,f,g as m,h as x,i as d,j as e,k as g}from"./chunk-AVPWFS7M.js";import{b as l,c as p,e as u,f as c,g as i,h as n}from"./chunk-2YPTQYP3.js";var o={install(a,t){r(a,e,t)}};export*from"@agile-team/mach-table";var U=o;export{p as MACH_TABLE_CONFIG_KEY,l as MACH_TABLE_DEFAULTS_KEY,e as MachTable,o as MachTablePlugin,g as RobotGrid,x as applyVueSlots,d as createVueSlotEnhancer,U as default,u as provideMachTableConfig,c as provideMachTableDefaults,y as useMachTable,n as useMachTableConfig,S as useMachTableController,i as useMachTableDefaults,C as useMachTableEditing,R as useMachTableQuery,h as vueCellEditorSlot,s as vueCellRenderer,T as vueCellSlotRenderer,b as vueDetailRenderer,f as vueDetailSlotRenderer,M as vueHeaderSlotRenderer,m as vueOverlaySlot};
1
+ import{a}from"./chunk-Y4S6TCE5.js";import{a as b}from"./chunk-YTEW56VQ.js";import{a as e}from"./chunk-2ANGCJOO.js";import{b as t,d as l,e as i}from"./chunk-7MRR4IDI.js";import"./chunk-SQVY5G55.js";var o={install(r,p){a(r,e,p)}};export*from"@agile-team/mach-table";var m=o;export{t as MACH_TABLE_CONFIG_KEY,e as MachTable,o as MachTablePlugin,m as default,l as provideMachTableConfig,b as useMachTable,i as useMachTableConfig};
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 b={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},d= 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:r,slots:s}){let c=a=>_nullishCoalesce(e.features[a], () => (b[a])),t=(a,...o)=>{let n=e.commands?Reflect.get(e.commands,a):void 0;return typeof n=="function"&&e.commands?Reflect.apply(n,e.commands,o):void 0},i=(a,o,n,h=!1)=>_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:h,onClick:n},o),u=()=>{let a=[..._nullishCoalesce(_optionalChain([s, 'access', _ => _.start, 'optionalCall', _2 => _2()]), () => ([]))];return c("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:o=>{let n=o.target.value;r("update:modelValue",n),e.commands?t("search",n||null):_optionalChain([e, 'access', _3 => _3.api, 'optionalAccess', _4 => _4.setQuickFilter, 'call', _5 => _5(n||null)])}})])),c("refresh")&&a.push(i("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{r("refresh"),e.commands?t("refresh"):_optionalChain([e, 'access', _6 => _6.api, 'optionalAccess', _7 => _7.isInfinite, 'call', _8 => _8()])?e.api.reload():_optionalChain([e, 'access', _9 => _9.api, 'optionalAccess', _10 => _10.refreshCells, 'call', _11 => _11()])},e.loading)),c("columns")&&a.push(i("\u5217\u8BBE\u7F6E","\u2637",o=>{let n=o.currentTarget;n instanceof HTMLElement&&(e.commands?t("openColumns",n):_optionalChain([e, 'access', _12 => _12.api, 'optionalAccess', _13 => _13.openColumnWorkbench, 'call', _14 => _14(n)]))})),c("density")&&a.push(_vue.h.call(void 0, "select",{class:"mach-toolbar__select",value:_nullishCoalesce(_optionalChain([e, 'access', _15 => _15.api, 'optionalAccess', _16 => _16.getGridOption, 'call', _17 => _17("size")]), () => ("normal")),"aria-label":"\u8868\u683C\u5BC6\u5EA6",onChange:o=>{let n=o.target.value;e.commands?t("setDensity",n):_optionalChain([e, 'access', _18 => _18.api, 'optionalAccess', _19 => _19.setGridOption, 'call', _20 => _20("size",n)])}},[_vue.h.call(void 0, "option",{value:"compact"},"\u7D27\u51D1"),_vue.h.call(void 0, "option",{value:"normal"},"\u6807\u51C6"),_vue.h.call(void 0, "option",{value:"large"},"\u5BBD\u677E")])),a.push(..._nullishCoalesce(_optionalChain([s, 'access', _21 => _21.default, 'optionalCall', _22 => _22()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__main"},a)},m=()=>{let a=[];return e.selectedCount>0&&a.push(_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__selection",onClick:()=>r("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),c("undoRedo")&&(a.push(i("\u64A4\u9500","\u21B6",()=>{e.commands?t("undo"):_optionalChain([e, 'access', _23 => _23.api, 'optionalAccess', _24 => _24.undo, 'call', _25 => _25()])},e.commands?!e.commands.canUndo():!_optionalChain([e, 'access', _26 => _26.api, 'optionalAccess', _27 => _27.canUndo, 'call', _28 => _28()]))),a.push(i("\u91CD\u505A","\u21B7",()=>{e.commands?t("redo"):_optionalChain([e, 'access', _29 => _29.api, 'optionalAccess', _30 => _30.redo, 'call', _31 => _31()])},e.commands?!e.commands.canRedo():!_optionalChain([e, 'access', _32 => _32.api, 'optionalAccess', _33 => _33.canRedo, 'call', _34 => _34()])))),c("export")&&a.push(i("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&t("exportCsv",e.exportFilename)},!e.commands)),c("fullscreen")&&a.push(i("\u5168\u5C4F","\u26F6",()=>{t("toggleFullscreen")},!e.commands)),a.push(..._nullishCoalesce(_optionalChain([s, 'access', _35 => _35.end, 'optionalCall', _36 => _36()]), () => ([]))),_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"},[u(),m()])}});var T={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",d)}};var M=T;exports.MachTableToolbar = d; exports.MachTableUiPlugin = T; exports.default = M;
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 f={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},s= 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:d,slots:r}){let c=a=>_nullishCoalesce(e.features[a], () => (f[a])),t=(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},i=(a,n,l,h=!1)=>_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:h,onClick:l},n),u=()=>{let a=[..._nullishCoalesce(_optionalChain([r, 'access', _ => _.start, 'optionalCall', _2 => _2()]), () => ([]))];return c("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;d("update:modelValue",l),e.commands?t("search",l||null):_optionalChain([e, 'access', _3 => _3.api, 'optionalAccess', _4 => _4.filtering, 'access', _5 => _5.setQuickText, 'call', _6 => _6(l||null)])}})])),c("refresh")&&a.push(i("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{d("refresh"),e.commands?t("refresh"):_optionalChain([e, 'access', _7 => _7.api, 'optionalAccess', _8 => _8.rows, 'access', _9 => _9.isRemote, 'call', _10 => _10()])?e.api.rows.reload():_optionalChain([e, 'access', _11 => _11.api, 'optionalAccess', _12 => _12.view, 'access', _13 => _13.refreshCells, 'call', _14 => _14()])},e.loading)),c("columns")&&a.push(i("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?t("openColumns",l):_optionalChain([e, 'access', _15 => _15.api, 'optionalAccess', _16 => _16.columns, 'access', _17 => _17.openWorkbench, 'call', _18 => _18(l)]))})),c("density")&&a.push(_vue.h.call(void 0, "select",{class:"mach-toolbar__select",value:_nullishCoalesce(_optionalChain([e, 'access', _19 => _19.api, 'optionalAccess', _20 => _20.getOption, 'call', _21 => _21("size")]), () => ("normal")),"aria-label":"\u8868\u683C\u5BC6\u5EA6",onChange:n=>{let l=n.target.value;e.commands?t("setDensity",l):_optionalChain([e, 'access', _22 => _22.api, 'optionalAccess', _23 => _23.updateOptions, 'call', _24 => _24({size:l})])}},[_vue.h.call(void 0, "option",{value:"compact"},"\u7D27\u51D1"),_vue.h.call(void 0, "option",{value:"normal"},"\u6807\u51C6"),_vue.h.call(void 0, "option",{value:"large"},"\u5BBD\u677E")])),a.push(..._nullishCoalesce(_optionalChain([r, 'access', _25 => _25.default, 'optionalCall', _26 => _26()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__main"},a)},m=()=>{let a=[];return e.selectedCount>0&&a.push(_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__selection",onClick:()=>d("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),c("undoRedo")&&(a.push(i("\u64A4\u9500","\u21B6",()=>{e.commands?t("undo"):_optionalChain([e, 'access', _27 => _27.api, 'optionalAccess', _28 => _28.editing, 'access', _29 => _29.undo, 'call', _30 => _30()])},e.commands?!e.commands.canUndo():!_optionalChain([e, 'access', _31 => _31.api, 'optionalAccess', _32 => _32.editing, 'access', _33 => _33.canUndo, 'call', _34 => _34()]))),a.push(i("\u91CD\u505A","\u21B7",()=>{e.commands?t("redo"):_optionalChain([e, 'access', _35 => _35.api, 'optionalAccess', _36 => _36.editing, 'access', _37 => _37.redo, 'call', _38 => _38()])},e.commands?!e.commands.canRedo():!_optionalChain([e, 'access', _39 => _39.api, 'optionalAccess', _40 => _40.editing, 'access', _41 => _41.canRedo, 'call', _42 => _42()])))),c("export")&&a.push(i("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&t("exportCsv",e.exportFilename)},!e.commands)),c("fullscreen")&&a.push(i("\u5168\u5C4F","\u26F6",()=>{t("toggleFullscreen")},!e.commands)),a.push(..._nullishCoalesce(_optionalChain([r, 'access', _43 => _43.end, 'optionalCall', _44 => _44()]), () => ([]))),_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"},[u(),m()])}});var T={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",s)}};var p=T;exports.MachTableToolbar = s; exports.MachTableUiPlugin = T; exports.default = p;
package/dist/ui.d.cts CHANGED
@@ -1,10 +1,107 @@
1
- import { App } from 'vue';
2
- export { M as MachTableToolbar, a as MachTableToolbarFeatures } from './MachTableToolbar-CDkTtitl.cjs';
3
- import '@agile-team/mach-table';
1
+ import * as vue from 'vue';
2
+ import { PropType, App } from 'vue';
3
+ import { GridApi, MachTableCommands } from '@agile-team/mach-table';
4
4
 
5
+ interface MachTableToolbarFeatures {
6
+ search?: boolean;
7
+ refresh?: boolean;
8
+ columns?: boolean;
9
+ density?: boolean;
10
+ export?: boolean;
11
+ undoRedo?: boolean;
12
+ fullscreen?: boolean;
13
+ }
14
+ declare const MachTableToolbar: vue.DefineComponent<vue.ExtractPropTypes<{
15
+ api: {
16
+ type: PropType<GridApi<any> | null>;
17
+ default: null;
18
+ };
19
+ commands: {
20
+ type: PropType<MachTableCommands | null>;
21
+ default: null;
22
+ };
23
+ modelValue: {
24
+ type: StringConstructor;
25
+ default: string;
26
+ };
27
+ loading: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
31
+ selectedCount: {
32
+ type: NumberConstructor;
33
+ default: number;
34
+ };
35
+ searchPlaceholder: {
36
+ type: StringConstructor;
37
+ default: string;
38
+ };
39
+ exportFilename: {
40
+ type: StringConstructor;
41
+ default: string;
42
+ };
43
+ features: {
44
+ type: PropType<MachTableToolbarFeatures>;
45
+ default: () => {};
46
+ };
47
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
48
+ [key: string]: any;
49
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("refresh" | "update:modelValue" | "clearSelection")[], "refresh" | "update:modelValue" | "clearSelection", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
50
+ api: {
51
+ type: PropType<GridApi<any> | null>;
52
+ default: null;
53
+ };
54
+ commands: {
55
+ type: PropType<MachTableCommands | null>;
56
+ default: null;
57
+ };
58
+ modelValue: {
59
+ type: StringConstructor;
60
+ default: string;
61
+ };
62
+ loading: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ selectedCount: {
67
+ type: NumberConstructor;
68
+ default: number;
69
+ };
70
+ searchPlaceholder: {
71
+ type: StringConstructor;
72
+ default: string;
73
+ };
74
+ exportFilename: {
75
+ type: StringConstructor;
76
+ default: string;
77
+ };
78
+ features: {
79
+ type: PropType<MachTableToolbarFeatures>;
80
+ default: () => {};
81
+ };
82
+ }>> & Readonly<{
83
+ onRefresh?: ((...args: any[]) => any) | undefined;
84
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
85
+ onClearSelection?: ((...args: any[]) => any) | undefined;
86
+ }>, {
87
+ features: MachTableToolbarFeatures;
88
+ loading: boolean;
89
+ selectedCount: number;
90
+ api: GridApi<any> | null;
91
+ commands: MachTableCommands | null;
92
+ modelValue: string;
93
+ searchPlaceholder: string;
94
+ exportFilename: string;
95
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
96
+
97
+ declare module "vue" {
98
+ interface GlobalComponents {
99
+ MachTableToolbar: typeof MachTableToolbar;
100
+ }
101
+ }
5
102
  /** Optional UI layer. Install once only when the standard toolbar is desired. */
6
103
  declare const MachTableUiPlugin: {
7
104
  install(app: App): void;
8
105
  };
9
106
 
10
- export { MachTableUiPlugin, MachTableUiPlugin as default };
107
+ export { MachTableToolbar, type MachTableToolbarFeatures, MachTableUiPlugin, MachTableUiPlugin as default };
package/dist/ui.d.ts CHANGED
@@ -1,10 +1,107 @@
1
- import { App } from 'vue';
2
- export { M as MachTableToolbar, a as MachTableToolbarFeatures } from './MachTableToolbar-CDkTtitl.js';
3
- import '@agile-team/mach-table';
1
+ import * as vue from 'vue';
2
+ import { PropType, App } from 'vue';
3
+ import { GridApi, MachTableCommands } from '@agile-team/mach-table';
4
4
 
5
+ interface MachTableToolbarFeatures {
6
+ search?: boolean;
7
+ refresh?: boolean;
8
+ columns?: boolean;
9
+ density?: boolean;
10
+ export?: boolean;
11
+ undoRedo?: boolean;
12
+ fullscreen?: boolean;
13
+ }
14
+ declare const MachTableToolbar: vue.DefineComponent<vue.ExtractPropTypes<{
15
+ api: {
16
+ type: PropType<GridApi<any> | null>;
17
+ default: null;
18
+ };
19
+ commands: {
20
+ type: PropType<MachTableCommands | null>;
21
+ default: null;
22
+ };
23
+ modelValue: {
24
+ type: StringConstructor;
25
+ default: string;
26
+ };
27
+ loading: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
31
+ selectedCount: {
32
+ type: NumberConstructor;
33
+ default: number;
34
+ };
35
+ searchPlaceholder: {
36
+ type: StringConstructor;
37
+ default: string;
38
+ };
39
+ exportFilename: {
40
+ type: StringConstructor;
41
+ default: string;
42
+ };
43
+ features: {
44
+ type: PropType<MachTableToolbarFeatures>;
45
+ default: () => {};
46
+ };
47
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
48
+ [key: string]: any;
49
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("refresh" | "update:modelValue" | "clearSelection")[], "refresh" | "update:modelValue" | "clearSelection", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
50
+ api: {
51
+ type: PropType<GridApi<any> | null>;
52
+ default: null;
53
+ };
54
+ commands: {
55
+ type: PropType<MachTableCommands | null>;
56
+ default: null;
57
+ };
58
+ modelValue: {
59
+ type: StringConstructor;
60
+ default: string;
61
+ };
62
+ loading: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ selectedCount: {
67
+ type: NumberConstructor;
68
+ default: number;
69
+ };
70
+ searchPlaceholder: {
71
+ type: StringConstructor;
72
+ default: string;
73
+ };
74
+ exportFilename: {
75
+ type: StringConstructor;
76
+ default: string;
77
+ };
78
+ features: {
79
+ type: PropType<MachTableToolbarFeatures>;
80
+ default: () => {};
81
+ };
82
+ }>> & Readonly<{
83
+ onRefresh?: ((...args: any[]) => any) | undefined;
84
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
85
+ onClearSelection?: ((...args: any[]) => any) | undefined;
86
+ }>, {
87
+ features: MachTableToolbarFeatures;
88
+ loading: boolean;
89
+ selectedCount: number;
90
+ api: GridApi<any> | null;
91
+ commands: MachTableCommands | null;
92
+ modelValue: string;
93
+ searchPlaceholder: string;
94
+ exportFilename: string;
95
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
96
+
97
+ declare module "vue" {
98
+ interface GlobalComponents {
99
+ MachTableToolbar: typeof MachTableToolbar;
100
+ }
101
+ }
5
102
  /** Optional UI layer. Install once only when the standard toolbar is desired. */
6
103
  declare const MachTableUiPlugin: {
7
104
  install(app: App): void;
8
105
  };
9
106
 
10
- export { MachTableUiPlugin, MachTableUiPlugin as default };
107
+ export { MachTableToolbar, type MachTableToolbarFeatures, MachTableUiPlugin, MachTableUiPlugin as default };
package/dist/ui.js CHANGED
@@ -1 +1 @@
1
- import{defineComponent as f,h as l}from"vue";var b={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},d=f({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:r,slots:s}){let c=a=>e.features[a]??b[a],t=(a,...o)=>{let n=e.commands?Reflect.get(e.commands,a):void 0;return typeof n=="function"&&e.commands?Reflect.apply(n,e.commands,o):void 0},i=(a,o,n,h=!1)=>l("button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:h,onClick:n},o),u=()=>{let a=[...s.start?.()??[]];return c("search")&&a.push(l("label",{class:"mach-toolbar__search"},[l("span",{class:"mach-sr-only"},e.searchPlaceholder),l("span",{"aria-hidden":"true"},"\u2315"),l("input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:o=>{let n=o.target.value;r("update:modelValue",n),e.commands?t("search",n||null):e.api?.setQuickFilter(n||null)}})])),c("refresh")&&a.push(i("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{r("refresh"),e.commands?t("refresh"):e.api?.isInfinite()?e.api.reload():e.api?.refreshCells()},e.loading)),c("columns")&&a.push(i("\u5217\u8BBE\u7F6E","\u2637",o=>{let n=o.currentTarget;n instanceof HTMLElement&&(e.commands?t("openColumns",n):e.api?.openColumnWorkbench(n))})),c("density")&&a.push(l("select",{class:"mach-toolbar__select",value:e.api?.getGridOption("size")??"normal","aria-label":"\u8868\u683C\u5BC6\u5EA6",onChange:o=>{let n=o.target.value;e.commands?t("setDensity",n):e.api?.setGridOption("size",n)}},[l("option",{value:"compact"},"\u7D27\u51D1"),l("option",{value:"normal"},"\u6807\u51C6"),l("option",{value:"large"},"\u5BBD\u677E")])),a.push(...s.default?.()??[]),l("div",{class:"mach-toolbar__main"},a)},m=()=>{let a=[];return e.selectedCount>0&&a.push(l("button",{type:"button",class:"mach-toolbar__selection",onClick:()=>r("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),c("undoRedo")&&(a.push(i("\u64A4\u9500","\u21B6",()=>{e.commands?t("undo"):e.api?.undo()},e.commands?!e.commands.canUndo():!e.api?.canUndo())),a.push(i("\u91CD\u505A","\u21B7",()=>{e.commands?t("redo"):e.api?.redo()},e.commands?!e.commands.canRedo():!e.api?.canRedo()))),c("export")&&a.push(i("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&t("exportCsv",e.exportFilename)},!e.commands)),c("fullscreen")&&a.push(i("\u5168\u5C4F","\u26F6",()=>{t("toggleFullscreen")},!e.commands)),a.push(...s.end?.()??[]),l("div",{class:"mach-toolbar__aside"},a)};return()=>l("div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[u(),m()])}});var T={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",d)}};var M=T;export{d as MachTableToolbar,T as MachTableUiPlugin,M as default};
1
+ import{defineComponent as b,h as o}from"vue";var f={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},s=b({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:d,slots:r}){let c=a=>e.features[a]??f[a],t=(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},i=(a,n,l,h=!1)=>o("button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:h,onClick:l},n),u=()=>{let a=[...r.start?.()??[]];return c("search")&&a.push(o("label",{class:"mach-toolbar__search"},[o("span",{class:"mach-sr-only"},e.searchPlaceholder),o("span",{"aria-hidden":"true"},"\u2315"),o("input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;d("update:modelValue",l),e.commands?t("search",l||null):e.api?.filtering.setQuickText(l||null)}})])),c("refresh")&&a.push(i("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{d("refresh"),e.commands?t("refresh"):e.api?.rows.isRemote()?e.api.rows.reload():e.api?.view.refreshCells()},e.loading)),c("columns")&&a.push(i("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?t("openColumns",l):e.api?.columns.openWorkbench(l))})),c("density")&&a.push(o("select",{class:"mach-toolbar__select",value:e.api?.getOption("size")??"normal","aria-label":"\u8868\u683C\u5BC6\u5EA6",onChange:n=>{let l=n.target.value;e.commands?t("setDensity",l):e.api?.updateOptions({size:l})}},[o("option",{value:"compact"},"\u7D27\u51D1"),o("option",{value:"normal"},"\u6807\u51C6"),o("option",{value:"large"},"\u5BBD\u677E")])),a.push(...r.default?.()??[]),o("div",{class:"mach-toolbar__main"},a)},m=()=>{let a=[];return e.selectedCount>0&&a.push(o("button",{type:"button",class:"mach-toolbar__selection",onClick:()=>d("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),c("undoRedo")&&(a.push(i("\u64A4\u9500","\u21B6",()=>{e.commands?t("undo"):e.api?.editing.undo()},e.commands?!e.commands.canUndo():!e.api?.editing.canUndo())),a.push(i("\u91CD\u505A","\u21B7",()=>{e.commands?t("redo"):e.api?.editing.redo()},e.commands?!e.commands.canRedo():!e.api?.editing.canRedo()))),c("export")&&a.push(i("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&t("exportCsv",e.exportFilename)},!e.commands)),c("fullscreen")&&a.push(i("\u5168\u5C4F","\u26F6",()=>{t("toggleFullscreen")},!e.commands)),a.push(...r.end?.()??[]),o("div",{class:"mach-toolbar__aside"},a)};return()=>o("div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[u(),m()])}});var T={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",s)}};var p=T;export{s as MachTableToolbar,T as MachTableUiPlugin,p as default};
@@ -0,0 +1,12 @@
1
+ import { Ref, ShallowRef } from 'vue';
2
+ import { GridApi } from '@agile-team/mach-table';
3
+ import { b as MachTableVueExposed } from './MachTable-jS92BIXm.js';
4
+
5
+ interface UseMachTableReturn<TData = any> {
6
+ ref: Ref<MachTableVueExposed<TData> | null>;
7
+ api: ShallowRef<GridApi<TData> | null>;
8
+ ready: ShallowRef<boolean>;
9
+ }
10
+ declare function useMachTable<TData = any>(): UseMachTableReturn<TData>;
11
+
12
+ export { type UseMachTableReturn as U, useMachTable as u };
@@ -0,0 +1,12 @@
1
+ import { Ref, ShallowRef } from 'vue';
2
+ import { GridApi } from '@agile-team/mach-table';
3
+ import { b as MachTableVueExposed } from './MachTable-jS92BIXm.cjs';
4
+
5
+ interface UseMachTableReturn<TData = any> {
6
+ ref: Ref<MachTableVueExposed<TData> | null>;
7
+ api: ShallowRef<GridApi<TData> | null>;
8
+ ready: ShallowRef<boolean>;
9
+ }
10
+ declare function useMachTable<TData = any>(): UseMachTableReturn<TData>;
11
+
12
+ export { type UseMachTableReturn as U, useMachTable as u };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkD3AAW636cjs = require('./chunk-D3AAW636.cjs');exports.useMachTableController = _chunkD3AAW636cjs.d; exports.useMachTableEditing = _chunkD3AAW636cjs.b; exports.useMachTableQuery = _chunkD3AAW636cjs.c;
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,4 +1,139 @@
1
- export { M as MachTablePageRequest, a as MachTablePageResult, b as MachTableQuerySource, c as MachTableRemoteSelectionState, U as UseMachTableControllerOptions, d as UseMachTableControllerReturn, e as UseMachTableEditingOptions, f as UseMachTableEditingReturn, g as UseMachTableQueryOptions, h as UseMachTableQueryReturn, j as useMachTableController, k as useMachTableEditing, l as useMachTableQuery } from './workflows-DEOJrSuj.cjs';
2
- import 'vue';
3
- import '@agile-team/mach-table';
4
- import './MachTable-DH0offab.cjs';
1
+ import { ShallowRef, Ref, ComputedRef } from 'vue';
2
+ import { GridChange, GridBatchSaveResult, SaveChangeIssue, SaveChangeConflict, SaveChangesHandler, SortModel, FilterModel, AdvancedFilterModel, OverlayContent, OverlayTemplate, GridOptions, MachTableCommands } from '@agile-team/mach-table';
3
+ import { U as UseMachTableReturn } from './useMachTable-YH4Xj6dS.cjs';
4
+ import './MachTable-jS92BIXm.cjs';
5
+ import '@agile-team/mach-table/adapter';
6
+
7
+ interface UseMachTableEditingOptions<TData = any> {
8
+ /** Warn before closing/reloading a browser tab with unsaved changes. */
9
+ guardBeforeUnload?: boolean;
10
+ beforeUnloadMessage?: string;
11
+ onSaveSuccess?(saved: readonly GridChange<TData>[]): void;
12
+ onSaveResult?(result: GridBatchSaveResult<TData>): void;
13
+ onSaveError?(error: unknown): void;
14
+ }
15
+ interface UseMachTableEditingReturn<TData = any> {
16
+ changes: ShallowRef<GridChange<TData>[]>;
17
+ dirtyRowIds: Ref<string[]>;
18
+ dirty: ComputedRef<boolean>;
19
+ saving: Ref<boolean>;
20
+ saveError: ShallowRef<unknown | null>;
21
+ lastSaveResult: ShallowRef<GridBatchSaveResult<TData> | null>;
22
+ saveIssues: ComputedRef<Array<SaveChangeIssue | SaveChangeConflict<TData>>>;
23
+ failedRowIds: ComputedRef<string[]>;
24
+ save(handler: SaveChangesHandler<TData>, rowIds?: readonly string[]): Promise<GridChange<TData>[]>;
25
+ saveDetailed(handler: SaveChangesHandler<TData>, rowIds?: readonly string[]): Promise<GridBatchSaveResult<TData>>;
26
+ clearSaveIssues(): void;
27
+ resolveConflict(rowId: string, strategy: "acceptServer" | "keepLocal"): boolean;
28
+ rollback(rowIds?: readonly string[]): boolean;
29
+ markSaved(rowIds?: readonly string[]): void;
30
+ /** Scrolls to a loaded changed row and optionally opens the failed cell editor. */
31
+ reveal(rowId: string, colId?: string, edit?: boolean): boolean;
32
+ refresh(): void;
33
+ }
34
+ /** Reactive dirty/save workflow layered over useMachTable(). */
35
+ declare function useMachTableEditing<TData = any>(table: UseMachTableReturn<TData>, options?: UseMachTableEditingOptions<TData>): UseMachTableEditingReturn<TData>;
36
+
37
+ type MachTableQuerySource<TQuery> = TQuery | Readonly<Ref<TQuery>> | (() => TQuery);
38
+ interface MachTablePageRequest<TQuery> {
39
+ page: number;
40
+ pageSize: number;
41
+ query: TQuery;
42
+ sortModel: SortModel;
43
+ filterModel: FilterModel;
44
+ advancedFilterModel: AdvancedFilterModel | null;
45
+ quickFilterText: string | null;
46
+ signal: AbortSignal;
47
+ }
48
+ interface MachTablePageResult<TData> {
49
+ rows: readonly TData[];
50
+ total: number;
51
+ }
52
+ type MachTableRemoteSelectionState = {
53
+ mode: "explicit";
54
+ selectedKeys: string[];
55
+ } | {
56
+ mode: "allMatching";
57
+ excludedKeys: string[];
58
+ };
59
+ interface UseMachTableQueryOptions<TData, TQuery = Record<string, unknown>> {
60
+ request(params: MachTablePageRequest<TQuery>): Promise<MachTablePageResult<TData>>;
61
+ query: MachTableQuerySource<TQuery>;
62
+ /** Stable row key used for updates and cross-page selection. */
63
+ rowKey: string | ((row: TData) => string | number);
64
+ initialPage?: number;
65
+ pageSize?: number;
66
+ pageSizeOptions?: readonly number[];
67
+ immediate?: boolean;
68
+ /** auto reloads when query/grid criteria change; manual waits for reload/reset. */
69
+ mode?: "auto" | "manual";
70
+ debounceMs?: number;
71
+ keepPreviousData?: boolean;
72
+ /** `query` additionally enables compact select-all-matching rules. */
73
+ selectionScope?: "page" | "preserve" | "query";
74
+ /** Defaults true: a different business/filter query cannot inherit stale selections. */
75
+ clearSelectionOnQueryChange?: boolean;
76
+ quickFilterText?: Ref<string | null>;
77
+ /** Renders inside the first-class error overlay for the latest failed request. */
78
+ errorOverlay?(context: {
79
+ error: unknown;
80
+ retry(): Promise<void>;
81
+ }): OverlayContent;
82
+ emptyOverlay?: OverlayTemplate;
83
+ onSuccess?(result: MachTablePageResult<TData>): void;
84
+ onError?(error: unknown): void;
85
+ }
86
+ interface UseMachTableQueryReturn<TData> {
87
+ rows: ShallowRef<TData[]>;
88
+ loading: Ref<boolean>;
89
+ error: ShallowRef<unknown | null>;
90
+ page: Ref<number>;
91
+ pageSize: Ref<number>;
92
+ total: Ref<number>;
93
+ sortModel: ShallowRef<SortModel>;
94
+ filterModel: ShallowRef<FilterModel>;
95
+ advancedFilterModel: ShallowRef<AdvancedFilterModel | null>;
96
+ selectedKeys: Ref<string[]>;
97
+ selectedRows: ShallowRef<TData[]>;
98
+ selectionState: ComputedRef<MachTableRemoteSelectionState>;
99
+ bindings: ComputedRef<GridOptions<TData>>;
100
+ reload(options?: {
101
+ resetPage?: boolean;
102
+ }): Promise<void>;
103
+ retry(): Promise<void>;
104
+ reset(): Promise<void>;
105
+ abort(): void;
106
+ clearSelection(): void;
107
+ /** Selects the complete server query without downloading every row ID. */
108
+ selectAllMatching(): void;
109
+ applySelectionState(state: MachTableRemoteSelectionState): void;
110
+ }
111
+ /**
112
+ * B-side remote-list controller: paging, sorting, filtering, cancellation,
113
+ * stale-response protection and cross-page selection in one typed binding.
114
+ */
115
+ declare function useMachTableQuery<TData, TQuery = Record<string, unknown>>(options: UseMachTableQueryOptions<TData, TQuery>): UseMachTableQueryReturn<TData>;
116
+
117
+ interface UseMachTableControllerOptions<TData, TQuery = Record<string, unknown>> {
118
+ /** Omit for local rowData; provide for a complete remote table workflow. */
119
+ query?: UseMachTableQueryOptions<TData, TQuery>;
120
+ editing?: UseMachTableEditingOptions<TData>;
121
+ initialSearch?: string;
122
+ }
123
+ interface UseMachTableControllerReturn<TData> {
124
+ table: UseMachTableReturn<TData>;
125
+ query: UseMachTableQueryReturn<TData> | null;
126
+ editing: UseMachTableEditingReturn<TData>;
127
+ bindings: ComputedRef<GridOptions<TData>>;
128
+ search: Ref<string>;
129
+ selectedRows: ShallowRef<TData[]>;
130
+ selectedCount: ComputedRef<number>;
131
+ busy: ComputedRef<boolean>;
132
+ error: ComputedRef<unknown | null>;
133
+ commands: MachTableCommands;
134
+ reload(): Promise<void>;
135
+ }
136
+ /** One cohesive controller for API readiness, query, selection, editing and toolbar commands. */
137
+ declare function useMachTableController<TData, TQuery = Record<string, unknown>>(options?: UseMachTableControllerOptions<TData, TQuery>): UseMachTableControllerReturn<TData>;
138
+
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 };