@visactor/vue-vtable 1.16.0 → 1.16.1

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/cjs/index.d.ts CHANGED
@@ -2,4 +2,4 @@ import * as VTable from '@visactor/vtable';
2
2
  export * from './tables';
3
3
  export * from './components';
4
4
  export { VTable };
5
- export declare const version = "1.16.0";
5
+ export declare const version = "1.16.1";
package/cjs/index.js CHANGED
@@ -40,7 +40,7 @@ function _interopNamespaceDefault(e) {
40
40
 
41
41
  var VTable__namespace = /*#__PURE__*/_interopNamespaceDefault(VTable);
42
42
 
43
- const version = "1.16.0";
43
+ const version = "1.16.1";
44
44
 
45
45
  exports.VTable = VTable__namespace;
46
46
  Object.defineProperty(exports, 'register', {
@@ -164,6 +164,10 @@ var _sfc_main = vue.defineComponent({
164
164
  return;
165
165
  }
166
166
  try {
167
+ if (props.keepColumnWidthChange) {
168
+ const columnWidthConfig = updateWidthCache(columnWidths.value, pivotColumnWidths.value, vTableInstance.value);
169
+ newOptions = Object.assign(Object.assign({}, newOptions), { columnWidthConfig: columnWidthConfig, columnWidthConfigForRowHeader: columnWidthConfig });
170
+ }
167
171
  switch (props.type) {
168
172
  case 'list':
169
173
  if (vTableInstance.value instanceof VTable.ListTable) {
@@ -204,6 +208,19 @@ var _sfc_main = vue.defineComponent({
204
208
  createVTable();
205
209
  }
206
210
  }, { deep: true });
211
+ function updateWidthCache(columnWidths, pivotColumnWidths, table) {
212
+ if (table.isPivotTable()) {
213
+ return pivotColumnWidths;
214
+ }
215
+ const columnWidthConfig = [];
216
+ columnWidths.forEach((width, key) => {
217
+ columnWidthConfig.push({
218
+ key,
219
+ width
220
+ });
221
+ });
222
+ return columnWidthConfig;
223
+ }
207
224
  return (_ctx, _cache) => {
208
225
  return (vue.openBlock(), vue.createElementBlock("div", {
209
226
  ref_key: "vTableContainer",
@@ -430,6 +430,14 @@
430
430
  return;
431
431
  }
432
432
  try {
433
+ if (props.keepColumnWidthChange) {
434
+ const columnWidthConfig = updateWidthCache(columnWidths.value, pivotColumnWidths.value, vTableInstance.value);
435
+ newOptions = {
436
+ ...newOptions,
437
+ columnWidthConfig: columnWidthConfig,
438
+ columnWidthConfigForRowHeader: columnWidthConfig
439
+ };
440
+ }
433
441
  switch (props.type) {
434
442
  case 'list':
435
443
  if (vTableInstance.value instanceof VTable.ListTable) {
@@ -470,6 +478,19 @@
470
478
  createVTable();
471
479
  }
472
480
  }, { deep: true });
481
+ function updateWidthCache(columnWidths, pivotColumnWidths, table) {
482
+ if (table.isPivotTable()) {
483
+ return pivotColumnWidths;
484
+ }
485
+ const columnWidthConfig = [];
486
+ columnWidths.forEach((width, key) => {
487
+ columnWidthConfig.push({
488
+ key,
489
+ width
490
+ });
491
+ });
492
+ return columnWidthConfig;
493
+ }
473
494
  return (_ctx, _cache) => {
474
495
  return (vue.openBlock(), vue.createElementBlock("div", {
475
496
  ref_key: "vTableContainer",
@@ -666,7 +687,7 @@
666
687
  }
667
688
  CheckBox.symbol = 'CheckBox';
668
689
 
669
- const version = "1.16.0";
690
+ const version = "1.16.1";
670
691
 
671
692
  exports.VTable = VTable__namespace;
672
693
  Object.defineProperty(exports, 'register', {
@@ -1 +1 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@visactor/vtable"),require("vue"),require("@visactor/vutils")):"function"==typeof define&&define.amd?define(["exports","@visactor/vtable","vue","@visactor/vutils"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).VueVTable={},e.VTable,e.vue,e.vutils)}(this,(function(e,o,n,t){"use strict";function r(e){var o=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(o,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),o.default=e,Object.freeze(o)}var l=r(o);function i(e){return e.replace(/-([a-z])/g,(e=>e[1].toUpperCase()))}function u(e){const o={};for(const n in e)if(e.hasOwnProperty(n)){o[i(n)]=e[n]}return o}function a(e){return e.flatMap((e=>Array.isArray(e.children)?a(e.children):e))}function s(e){const o={Group:l.CustomLayout.Group,Image:l.CustomLayout.Image,Text:l.CustomLayout.Text,Tag:l.CustomLayout.Tag,Radio:l.CustomLayout.Radio,CheckBox:l.CustomLayout.CheckBox};return{rootComponent:function e(n){if(!n)return null;const{type:r,children:l}=n,a=u(n.props),s=o[r?.symbol||r?.name];if(!s)return null;const c=new s({...a});!function(e,o){Object.keys(o).forEach((n=>{if(function(e,o){return e.startsWith("on")&&t.isFunction(o[e])}(n,o)){let t;t=n.startsWith("on")?n.slice(2).toLowerCase():i(n.slice(2)).toLowerCase(),e.addEventListener(t,o[n])}}))}(c,a);return function(e){return e?.default?.()||e||[]}(l).forEach((o=>{const n=e(o);n?c.add(n):o.type===Symbol.for("v-fgt")&&o.children.forEach((o=>{const n=e(o);n&&c.add(n)}))})),c}(e)}}function c(e){const o={columns:[],columnHeaderTitle:[],rows:[],rowHeaderTitle:[],indicators:[],corner:{},tooltip:{},menu:{}},n={PivotColumnDimension:"columns",PivotColumnHeaderTitle:"columnHeaderTitle",PivotRowDimension:"rows",PivotRowHeaderTitle:"rowHeaderTitle",PivotCorner:"corner",PivotIndicator:"indicators",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=u(e.props);const t=e.type?.symbol||e.type?.name,r=n[t];r&&(Array.isArray(o[r])?e.props.hasOwnProperty("objectHandler")?o[r].push(e.props.objectHandler):o[r].push(e.props):o[r]=e.props)})),o}function d(e){const o={columns:[],tooltip:{},menu:{}},n={ListColumn:"columns",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=u(e.props);const t=e.type?.symbol||e.type?.name,r=n[t];var l;r&&("columns"===r&&e.children&&(e.props.customLayout=(l=e.children,e=>{const{table:o,row:n,col:t,rect:r}=e,i=o.getCellOriginRecord(t,n),{height:u,width:a}=r??o.getCellRect(t,n),c=l.customLayout({table:o,row:n,col:t,rect:r,record:i,height:u,width:a})[0],{rootComponent:d}=s(c);return{rootContainer:d,renderDefault:!1}})),Array.isArray(o[r])?o[r].push(e.props):o[r]=e.props)})),o}function p(e,o){return{...e,columns:o.columns&&o.columns.length?o.columns:e.columns,columnHeaderTitle:o.columnHeaderTitle&&o.columnHeaderTitle.length?o.columnHeaderTitle:e.columnHeaderTitle,rows:o.rows&&o.rows.length?o.rows:e.rows,rowHeaderTitle:o.rowHeaderTitle&&o.rowHeaderTitle.length?o.rowHeaderTitle:e.rowHeaderTitle,indicators:o.indicators&&o.indicators.length?o.indicators:e.indicators,corner:Object.keys(e.corner||{}).length?e.corner:o.corner,tooltip:Object.keys(o.tooltip||{}).length?o.tooltip:e.tooltip,menu:Object.keys(o.menu||{}).length?o.menu:e.menu}}const C={...o.ListTable.EVENT_TYPE,...o.PivotTable.EVENT_TYPE,...o.PivotChart.EVENT_TYPE},y={onClickCell:C.CLICK_CELL,onDblClickCell:C.DBLCLICK_CELL,onMouseDownCell:C.MOUSEDOWN_CELL,onMouseUpCell:C.MOUSEUP_CELL,onSelectedCell:C.SELECTED_CELL,onKeyDown:C.KEYDOWN,onMouseEnterTable:C.MOUSEENTER_TABLE,onMouseLeaveTable:C.MOUSELEAVE_TABLE,onMouseDownTable:C.MOUSEDOWN_TABLE,onMouseMoveCell:C.MOUSEMOVE_CELL,onMouseEnterCell:C.MOUSEENTER_CELL,onMouseLeaveCell:C.MOUSELEAVE_CELL,onContextMenuCell:C.CONTEXTMENU_CELL,onResizeColumn:C.RESIZE_COLUMN,onResizeColumnEnd:C.RESIZE_COLUMN_END,onChangeHeaderPosition:C.CHANGE_HEADER_POSITION,onChangeHeaderPositionStart:C.CHANGE_HEADER_POSITION_START,onChangeHeaderPositionFail:C.CHANGE_HEADER_POSITION_FAIL,onSortClick:C.SORT_CLICK,onFreezeClick:C.FREEZE_CLICK,onScroll:C.SCROLL,onDropdownMenuClick:C.DROPDOWN_MENU_CLICK,onMouseOverChartSymbol:C.MOUSEOVER_CHART_SYMBOL,onDragSelectEnd:C.DRAG_SELECT_END,onDropdownIconClick:C.DROPDOWN_ICON_CLICK,onDropdownMenuClear:C.DROPDOWN_MENU_CLEAR,onTreeHierarchyStateChange:C.TREE_HIERARCHY_STATE_CHANGE,onShowMenu:C.SHOW_MENU,onHideMenu:C.HIDE_MENU,onIconClick:C.ICON_CLICK,onLegendItemClick:C.LEGEND_ITEM_CLICK,onLegendItemHover:C.LEGEND_ITEM_HOVER,onLegendItemUnHover:C.LEGEND_ITEM_UNHOVER,onLegendChange:C.LEGEND_CHANGE,onMouseEnterAxis:C.MOUSEENTER_AXIS,onMouseLeaveAxis:C.MOUSELEAVE_AXIS,onCheckboxStateChange:C.CHECKBOX_STATE_CHANGE,onRadioStateChange:C.RADIO_STATE_CHANGE,onAfterRender:C.AFTER_RENDER,onInitialized:C.INITIALIZED,onPivotSortClick:C.PIVOT_SORT_CLICK,onDrillMenuClick:C.DRILLMENU_CLICK,onVChartEventType:C.VCHART_EVENT_TYPE,onChangeCellValue:C.CHANGE_CELL_VALUE,onMousedownFillHandle:C.MOUSEDOWN_FILL_HANDLE,onDragFillHandleEnd:C.DRAG_FILL_HANDLE_END,onDblclickFillHandle:C.DBLCLICK_FILL_HANDLE,onScrollVerticalEnd:C.SCROLL_VERTICAL_END,onScrollHorizontalEnd:C.SCROLL_HORIZONTAL_END,onChangCellValue:C.CHANGE_CELL_VALUE},E=Object.keys(y);var h=n.defineComponent({__name:"base-table",props:{type:{type:String,required:!1},options:{type:null,required:!1},records:{type:Array,required:!1},width:{type:[Number,String],required:!1,default:"100%"},height:{type:[Number,String],required:!1,default:"100%"},onReady:{type:Function,required:!1},onError:{type:Function,required:!1},keepColumnWidthChange:{type:Boolean,required:!1},onClickCell:{type:null,required:!1},onDblClickCell:{type:null,required:!1},onMouseDownCell:{type:null,required:!1},onMouseUpCell:{type:null,required:!1},onSelectedCell:{type:null,required:!1},onKeyDown:{type:null,required:!1},onMouseEnterTable:{type:null,required:!1},onMouseLeaveTable:{type:null,required:!1},onMouseDownTable:{type:null,required:!1},onMouseMoveCell:{type:null,required:!1},onMouseEnterCell:{type:null,required:!1},onMouseLeaveCell:{type:null,required:!1},onContextMenuCell:{type:null,required:!1},onResizeColumn:{type:null,required:!1},onResizeColumnEnd:{type:null,required:!1},onChangeHeaderPosition:{type:null,required:!1},onChangeHeaderPositionStart:{type:null,required:!1},onChangeHeaderPositionFail:{type:null,required:!1},onSortClick:{type:null,required:!1},onFreezeClick:{type:null,required:!1},onScroll:{type:null,required:!1},onDropdownMenuClick:{type:null,required:!1},onMouseOverChartSymbol:{type:null,required:!1},onDragSelectEnd:{type:null,required:!1},onDropdownIconClick:{type:null,required:!1},onDropdownMenuClear:{type:null,required:!1},onTreeHierarchyStateChange:{type:null,required:!1},onShowMenu:{type:null,required:!1},onHideMenu:{type:null,required:!1},onIconClick:{type:null,required:!1},onLegendItemClick:{type:null,required:!1},onLegendItemHover:{type:null,required:!1},onLegendItemUnHover:{type:null,required:!1},onLegendChange:{type:null,required:!1},onMouseEnterAxis:{type:null,required:!1},onMouseLeaveAxis:{type:null,required:!1},onCheckboxStateChange:{type:null,required:!1},onRadioStateChange:{type:null,required:!1},onAfterRender:{type:null,required:!1},onInitialized:{type:null,required:!1},onPivotSortClick:{type:null,required:!1},onDrillMenuClick:{type:null,required:!1},onVChartEventType:{type:null,required:!1},onChangeCellValue:{type:null,required:!1},onMousedownFillHandle:{type:null,required:!1},onDragFillHandleEnd:{type:null,required:!1},onDblclickFillHandle:{type:null,required:!1},onScrollVerticalEnd:{type:null,required:!1},onScrollHorizontalEnd:{type:null,required:!1}},emits:E,setup(e,{expose:t,emit:r}){const l=e,i=n.ref(null),u=n.shallowRef(null),a=n.ref(new Map),s=n.ref([]),c=n.ref([]);t({vTableInstance:u});const d=n.computed((()=>"number"==typeof l.width?`${l.width}px`:l.width)),p=n.computed((()=>"number"==typeof l.height?`${l.height}px`:l.height)),C=r,h=(e,o)=>{const n=new e(i.value,o);u.value=n,a.value.clear(),s.value=[],c.value=[],n.on("resize_column_end",(e=>{if(!l.keepColumnWidthChange)return;const{col:o,colWidths:t}=e,r=t[o];if(n.isPivotTable()){const e=n.getCellHeaderPaths(o,n.columnHeaderLevelCount);let t=null;t="rowHeader"===e.cellLocation?e.rowHeaderPaths:e.colHeaderPaths;let l=!1;for(let e=0;e<s.value.length;e++){const o=s.value[e];JSON.stringify(o.dimensions)===JSON.stringify(t)&&(o.width=r,l=!0)}l||s.value.push({dimensions:t,width:r})}else{const e=n.getBodyColumnDefine(o,0);e?.key&&a.value.set(e.key,r)}}))},m=()=>{if(!i.value)return;u.value&&u.value.release();const e=()=>void 0!==l.records&&null!==l.records&&l.records.length>0?l.records:l.options.records;try{switch(l.type){case"list":h(o.ListTable,{...l.options,records:e()});break;case"pivot":h(o.PivotTable,{...l.options,records:e()});break;case"chart":h(o.PivotChart,{...l.options,records:e()})}n=u.value,E.forEach((e=>{n.on(y[e],(o=>{C(e,o)}))})),l.onReady?.(u.value,!0)}catch(e){l.onError?.(e)}var n},v=e=>{if(u.value)try{switch(l.type){case"list":u.value instanceof o.ListTable&&u.value.updateOption(e);break;case"pivot":u.value instanceof o.PivotTable&&u.value.updateOption(e);break;case"chart":u.value instanceof o.PivotChart&&u.value.updateOption(e)}}catch(e){l.onError?.(e)}};return n.onMounted(m),n.onBeforeUnmount((()=>u.value?.release())),n.watch((()=>l.options),(e=>{u.value?v(e):m()})),n.watch((()=>l.records),((e,o)=>{u.value?v({...l.options,records:e}):m()}),{deep:!0}),(e,o)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"vTableContainer",ref:i,style:n.normalizeStyle([{width:d.value,height:p.value},{position:"relative"}])},null,4))}}),m=n.defineComponent({__name:"list-table",props:{options:{type:Object,required:!0},records:{type:Array,required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1}},setup(e,{expose:o}){const t=e,r=n.ref(null),l=n.useSlots(),i=n.computed((()=>{const e=d(a(l.default?.()||[]));return p(t.options,e)}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(h,n.mergeProps({type:"list",options:i.value,records:e.records,width:e.width,height:e.height,ref_key:"baseTableRef",ref:r},e.$attrs),null,16,["options","records","width","height"]),n.renderSlot(e.$slots,"default")],64))}}),v=n.defineComponent({__name:"pivot-table",props:{options:{type:Object,required:!0},records:{type:Array,required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1}},setup(e,{expose:o}){const t=e,r=n.shallowRef(null),l=n.useSlots(),i=n.computed((()=>{const e=c(a(l.default?.()||[]));return p(t.options,e)}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(h,n.mergeProps({type:"pivot",options:i.value,records:e.records,width:e.width,height:e.height,ref_key:"baseTableRef",ref:r},e.$attrs),null,16,["options","records","width","height"]),n.renderSlot(e.$slots,"default")],64))}}),f=n.defineComponent({__name:"pivot-chart",props:{options:{type:Object,required:!0},records:{type:Array,required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1}},setup(e,{expose:o}){const t=e,r=n.shallowRef(null),l=n.useSlots(),i=n.computed((()=>{const e=c(a(l.default?.()||[]));return p(t.options,e)}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(h,n.mergeProps({type:"chart",options:i.value,records:e.records,width:e.width,height:e.height,ref_key:"baseTableRef",ref:r},e.$attrs),null,16,["options","records","width","height"]),n.renderSlot(e.$slots,"default")],64))}});function T(e){return null}function L(e){return null}function b(e){return null}function g(e){return null}function _(e){return null}function S(e){return null}function w(e){return null}function H(e){return null}function O(e){return null}function q(){return null}function M(){return null}function I(){return null}function D(e){return null}function N(e){return null}function R(e){return null}T.symbol="ListColumn",L.symbol="PivotColumnDimension",b.symbol="PivotRowDimension",g.symbol="PivotColumnHeaderTitle",_.symbol="PivotRowHeaderTitle",S.symbol="PivotIndicator",w.symbol="PivotCorner",H.symbol="Menu",O.symbol="Tooltip",q.symbol="Group",M.symbol="Image",I.symbol="Text",D.symbol="Tag",N.symbol="Radio",R.symbol="CheckBox";e.VTable=l,Object.defineProperty(e,"register",{enumerable:!0,get:function(){return o.register}}),e.CheckBox=R,e.Group=q,e.Image=M,e.ListColumn=T,e.ListTable=m,e.Menu=H,e.PivotChart=f,e.PivotColumnDimension=L,e.PivotColumnHeaderTitle=g,e.PivotCorner=w,e.PivotIndicator=S,e.PivotRowDimension=b,e.PivotRowHeaderTitle=_,e.PivotTable=v,e.Radio=N,e.Tag=D,e.Text=I,e.Tooltip=O,e.registerChartModule=(e,o)=>{l.register.chartModule(e,o)},e.version="1.16.0"}));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@visactor/vtable"),require("vue"),require("@visactor/vutils")):"function"==typeof define&&define.amd?define(["exports","@visactor/vtable","vue","@visactor/vutils"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).VueVTable={},e.VTable,e.vue,e.vutils)}(this,(function(e,o,n,t){"use strict";function r(e){var o=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(o,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),o.default=e,Object.freeze(o)}var l=r(o);function i(e){return e.replace(/-([a-z])/g,(e=>e[1].toUpperCase()))}function u(e){const o={};for(const n in e)if(e.hasOwnProperty(n)){o[i(n)]=e[n]}return o}function a(e){return e.flatMap((e=>Array.isArray(e.children)?a(e.children):e))}function s(e){const o={Group:l.CustomLayout.Group,Image:l.CustomLayout.Image,Text:l.CustomLayout.Text,Tag:l.CustomLayout.Tag,Radio:l.CustomLayout.Radio,CheckBox:l.CustomLayout.CheckBox};return{rootComponent:function e(n){if(!n)return null;const{type:r,children:l}=n,a=u(n.props),s=o[r?.symbol||r?.name];if(!s)return null;const c=new s({...a});!function(e,o){Object.keys(o).forEach((n=>{if(function(e,o){return e.startsWith("on")&&t.isFunction(o[e])}(n,o)){let t;t=n.startsWith("on")?n.slice(2).toLowerCase():i(n.slice(2)).toLowerCase(),e.addEventListener(t,o[n])}}))}(c,a);return function(e){return e?.default?.()||e||[]}(l).forEach((o=>{const n=e(o);n?c.add(n):o.type===Symbol.for("v-fgt")&&o.children.forEach((o=>{const n=e(o);n&&c.add(n)}))})),c}(e)}}function c(e){const o={columns:[],columnHeaderTitle:[],rows:[],rowHeaderTitle:[],indicators:[],corner:{},tooltip:{},menu:{}},n={PivotColumnDimension:"columns",PivotColumnHeaderTitle:"columnHeaderTitle",PivotRowDimension:"rows",PivotRowHeaderTitle:"rowHeaderTitle",PivotCorner:"corner",PivotIndicator:"indicators",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=u(e.props);const t=e.type?.symbol||e.type?.name,r=n[t];r&&(Array.isArray(o[r])?e.props.hasOwnProperty("objectHandler")?o[r].push(e.props.objectHandler):o[r].push(e.props):o[r]=e.props)})),o}function d(e){const o={columns:[],tooltip:{},menu:{}},n={ListColumn:"columns",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=u(e.props);const t=e.type?.symbol||e.type?.name,r=n[t];var l;r&&("columns"===r&&e.children&&(e.props.customLayout=(l=e.children,e=>{const{table:o,row:n,col:t,rect:r}=e,i=o.getCellOriginRecord(t,n),{height:u,width:a}=r??o.getCellRect(t,n),c=l.customLayout({table:o,row:n,col:t,rect:r,record:i,height:u,width:a})[0],{rootComponent:d}=s(c);return{rootContainer:d,renderDefault:!1}})),Array.isArray(o[r])?o[r].push(e.props):o[r]=e.props)})),o}function p(e,o){return{...e,columns:o.columns&&o.columns.length?o.columns:e.columns,columnHeaderTitle:o.columnHeaderTitle&&o.columnHeaderTitle.length?o.columnHeaderTitle:e.columnHeaderTitle,rows:o.rows&&o.rows.length?o.rows:e.rows,rowHeaderTitle:o.rowHeaderTitle&&o.rowHeaderTitle.length?o.rowHeaderTitle:e.rowHeaderTitle,indicators:o.indicators&&o.indicators.length?o.indicators:e.indicators,corner:Object.keys(e.corner||{}).length?e.corner:o.corner,tooltip:Object.keys(o.tooltip||{}).length?o.tooltip:e.tooltip,menu:Object.keys(o.menu||{}).length?o.menu:e.menu}}const C={...o.ListTable.EVENT_TYPE,...o.PivotTable.EVENT_TYPE,...o.PivotChart.EVENT_TYPE},y={onClickCell:C.CLICK_CELL,onDblClickCell:C.DBLCLICK_CELL,onMouseDownCell:C.MOUSEDOWN_CELL,onMouseUpCell:C.MOUSEUP_CELL,onSelectedCell:C.SELECTED_CELL,onKeyDown:C.KEYDOWN,onMouseEnterTable:C.MOUSEENTER_TABLE,onMouseLeaveTable:C.MOUSELEAVE_TABLE,onMouseDownTable:C.MOUSEDOWN_TABLE,onMouseMoveCell:C.MOUSEMOVE_CELL,onMouseEnterCell:C.MOUSEENTER_CELL,onMouseLeaveCell:C.MOUSELEAVE_CELL,onContextMenuCell:C.CONTEXTMENU_CELL,onResizeColumn:C.RESIZE_COLUMN,onResizeColumnEnd:C.RESIZE_COLUMN_END,onChangeHeaderPosition:C.CHANGE_HEADER_POSITION,onChangeHeaderPositionStart:C.CHANGE_HEADER_POSITION_START,onChangeHeaderPositionFail:C.CHANGE_HEADER_POSITION_FAIL,onSortClick:C.SORT_CLICK,onFreezeClick:C.FREEZE_CLICK,onScroll:C.SCROLL,onDropdownMenuClick:C.DROPDOWN_MENU_CLICK,onMouseOverChartSymbol:C.MOUSEOVER_CHART_SYMBOL,onDragSelectEnd:C.DRAG_SELECT_END,onDropdownIconClick:C.DROPDOWN_ICON_CLICK,onDropdownMenuClear:C.DROPDOWN_MENU_CLEAR,onTreeHierarchyStateChange:C.TREE_HIERARCHY_STATE_CHANGE,onShowMenu:C.SHOW_MENU,onHideMenu:C.HIDE_MENU,onIconClick:C.ICON_CLICK,onLegendItemClick:C.LEGEND_ITEM_CLICK,onLegendItemHover:C.LEGEND_ITEM_HOVER,onLegendItemUnHover:C.LEGEND_ITEM_UNHOVER,onLegendChange:C.LEGEND_CHANGE,onMouseEnterAxis:C.MOUSEENTER_AXIS,onMouseLeaveAxis:C.MOUSELEAVE_AXIS,onCheckboxStateChange:C.CHECKBOX_STATE_CHANGE,onRadioStateChange:C.RADIO_STATE_CHANGE,onAfterRender:C.AFTER_RENDER,onInitialized:C.INITIALIZED,onPivotSortClick:C.PIVOT_SORT_CLICK,onDrillMenuClick:C.DRILLMENU_CLICK,onVChartEventType:C.VCHART_EVENT_TYPE,onChangeCellValue:C.CHANGE_CELL_VALUE,onMousedownFillHandle:C.MOUSEDOWN_FILL_HANDLE,onDragFillHandleEnd:C.DRAG_FILL_HANDLE_END,onDblclickFillHandle:C.DBLCLICK_FILL_HANDLE,onScrollVerticalEnd:C.SCROLL_VERTICAL_END,onScrollHorizontalEnd:C.SCROLL_HORIZONTAL_END,onChangCellValue:C.CHANGE_CELL_VALUE},h=Object.keys(y);var E=n.defineComponent({__name:"base-table",props:{type:{type:String,required:!1},options:{type:null,required:!1},records:{type:Array,required:!1},width:{type:[Number,String],required:!1,default:"100%"},height:{type:[Number,String],required:!1,default:"100%"},onReady:{type:Function,required:!1},onError:{type:Function,required:!1},keepColumnWidthChange:{type:Boolean,required:!1},onClickCell:{type:null,required:!1},onDblClickCell:{type:null,required:!1},onMouseDownCell:{type:null,required:!1},onMouseUpCell:{type:null,required:!1},onSelectedCell:{type:null,required:!1},onKeyDown:{type:null,required:!1},onMouseEnterTable:{type:null,required:!1},onMouseLeaveTable:{type:null,required:!1},onMouseDownTable:{type:null,required:!1},onMouseMoveCell:{type:null,required:!1},onMouseEnterCell:{type:null,required:!1},onMouseLeaveCell:{type:null,required:!1},onContextMenuCell:{type:null,required:!1},onResizeColumn:{type:null,required:!1},onResizeColumnEnd:{type:null,required:!1},onChangeHeaderPosition:{type:null,required:!1},onChangeHeaderPositionStart:{type:null,required:!1},onChangeHeaderPositionFail:{type:null,required:!1},onSortClick:{type:null,required:!1},onFreezeClick:{type:null,required:!1},onScroll:{type:null,required:!1},onDropdownMenuClick:{type:null,required:!1},onMouseOverChartSymbol:{type:null,required:!1},onDragSelectEnd:{type:null,required:!1},onDropdownIconClick:{type:null,required:!1},onDropdownMenuClear:{type:null,required:!1},onTreeHierarchyStateChange:{type:null,required:!1},onShowMenu:{type:null,required:!1},onHideMenu:{type:null,required:!1},onIconClick:{type:null,required:!1},onLegendItemClick:{type:null,required:!1},onLegendItemHover:{type:null,required:!1},onLegendItemUnHover:{type:null,required:!1},onLegendChange:{type:null,required:!1},onMouseEnterAxis:{type:null,required:!1},onMouseLeaveAxis:{type:null,required:!1},onCheckboxStateChange:{type:null,required:!1},onRadioStateChange:{type:null,required:!1},onAfterRender:{type:null,required:!1},onInitialized:{type:null,required:!1},onPivotSortClick:{type:null,required:!1},onDrillMenuClick:{type:null,required:!1},onVChartEventType:{type:null,required:!1},onChangeCellValue:{type:null,required:!1},onMousedownFillHandle:{type:null,required:!1},onDragFillHandleEnd:{type:null,required:!1},onDblclickFillHandle:{type:null,required:!1},onScrollVerticalEnd:{type:null,required:!1},onScrollHorizontalEnd:{type:null,required:!1}},emits:h,setup(e,{expose:t,emit:r}){const l=e,i=n.ref(null),u=n.shallowRef(null),a=n.ref(new Map),s=n.ref([]),c=n.ref([]);t({vTableInstance:u});const d=n.computed((()=>"number"==typeof l.width?`${l.width}px`:l.width)),p=n.computed((()=>"number"==typeof l.height?`${l.height}px`:l.height)),C=r,E=(e,o)=>{const n=new e(i.value,o);u.value=n,a.value.clear(),s.value=[],c.value=[],n.on("resize_column_end",(e=>{if(!l.keepColumnWidthChange)return;const{col:o,colWidths:t}=e,r=t[o];if(n.isPivotTable()){const e=n.getCellHeaderPaths(o,n.columnHeaderLevelCount);let t=null;t="rowHeader"===e.cellLocation?e.rowHeaderPaths:e.colHeaderPaths;let l=!1;for(let e=0;e<s.value.length;e++){const o=s.value[e];JSON.stringify(o.dimensions)===JSON.stringify(t)&&(o.width=r,l=!0)}l||s.value.push({dimensions:t,width:r})}else{const e=n.getBodyColumnDefine(o,0);e?.key&&a.value.set(e.key,r)}}))},m=()=>{if(!i.value)return;u.value&&u.value.release();const e=()=>void 0!==l.records&&null!==l.records&&l.records.length>0?l.records:l.options.records;try{switch(l.type){case"list":E(o.ListTable,{...l.options,records:e()});break;case"pivot":E(o.PivotTable,{...l.options,records:e()});break;case"chart":E(o.PivotChart,{...l.options,records:e()})}n=u.value,h.forEach((e=>{n.on(y[e],(o=>{C(e,o)}))})),l.onReady?.(u.value,!0)}catch(e){l.onError?.(e)}var n},f=e=>{if(u.value)try{if(l.keepColumnWidthChange){const o=function(e,o,n){if(n.isPivotTable())return o;const t=[];return e.forEach(((e,o)=>{t.push({key:o,width:e})})),t}(a.value,s.value,u.value);e={...e,columnWidthConfig:o,columnWidthConfigForRowHeader:o}}switch(l.type){case"list":u.value instanceof o.ListTable&&u.value.updateOption(e);break;case"pivot":u.value instanceof o.PivotTable&&u.value.updateOption(e);break;case"chart":u.value instanceof o.PivotChart&&u.value.updateOption(e)}}catch(e){l.onError?.(e)}};return n.onMounted(m),n.onBeforeUnmount((()=>u.value?.release())),n.watch((()=>l.options),(e=>{u.value?f(e):m()})),n.watch((()=>l.records),((e,o)=>{u.value?f({...l.options,records:e}):m()}),{deep:!0}),(e,o)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"vTableContainer",ref:i,style:n.normalizeStyle([{width:d.value,height:p.value},{position:"relative"}])},null,4))}}),m=n.defineComponent({__name:"list-table",props:{options:{type:Object,required:!0},records:{type:Array,required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1}},setup(e,{expose:o}){const t=e,r=n.ref(null),l=n.useSlots(),i=n.computed((()=>{const e=d(a(l.default?.()||[]));return p(t.options,e)}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(E,n.mergeProps({type:"list",options:i.value,records:e.records,width:e.width,height:e.height,ref_key:"baseTableRef",ref:r},e.$attrs),null,16,["options","records","width","height"]),n.renderSlot(e.$slots,"default")],64))}}),f=n.defineComponent({__name:"pivot-table",props:{options:{type:Object,required:!0},records:{type:Array,required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1}},setup(e,{expose:o}){const t=e,r=n.shallowRef(null),l=n.useSlots(),i=n.computed((()=>{const e=c(a(l.default?.()||[]));return p(t.options,e)}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(E,n.mergeProps({type:"pivot",options:i.value,records:e.records,width:e.width,height:e.height,ref_key:"baseTableRef",ref:r},e.$attrs),null,16,["options","records","width","height"]),n.renderSlot(e.$slots,"default")],64))}}),v=n.defineComponent({__name:"pivot-chart",props:{options:{type:Object,required:!0},records:{type:Array,required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1}},setup(e,{expose:o}){const t=e,r=n.shallowRef(null),l=n.useSlots(),i=n.computed((()=>{const e=c(a(l.default?.()||[]));return p(t.options,e)}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(E,n.mergeProps({type:"chart",options:i.value,records:e.records,width:e.width,height:e.height,ref_key:"baseTableRef",ref:r},e.$attrs),null,16,["options","records","width","height"]),n.renderSlot(e.$slots,"default")],64))}});function T(e){return null}function L(e){return null}function g(e){return null}function b(e){return null}function _(e){return null}function w(e){return null}function S(e){return null}function H(e){return null}function O(e){return null}function q(){return null}function M(){return null}function I(){return null}function D(e){return null}function N(e){return null}function R(e){return null}T.symbol="ListColumn",L.symbol="PivotColumnDimension",g.symbol="PivotRowDimension",b.symbol="PivotColumnHeaderTitle",_.symbol="PivotRowHeaderTitle",w.symbol="PivotIndicator",S.symbol="PivotCorner",H.symbol="Menu",O.symbol="Tooltip",q.symbol="Group",M.symbol="Image",I.symbol="Text",D.symbol="Tag",N.symbol="Radio",R.symbol="CheckBox";e.VTable=l,Object.defineProperty(e,"register",{enumerable:!0,get:function(){return o.register}}),e.CheckBox=R,e.Group=q,e.Image=M,e.ListColumn=T,e.ListTable=m,e.Menu=H,e.PivotChart=v,e.PivotColumnDimension=L,e.PivotColumnHeaderTitle=b,e.PivotCorner=S,e.PivotIndicator=w,e.PivotRowDimension=g,e.PivotRowHeaderTitle=_,e.PivotTable=f,e.Radio=N,e.Tag=D,e.Text=I,e.Tooltip=O,e.registerChartModule=(e,o)=>{l.register.chartModule(e,o)},e.version="1.16.1"}));
package/es/index.d.ts CHANGED
@@ -2,4 +2,4 @@ import * as VTable from '@visactor/vtable';
2
2
  export * from './tables';
3
3
  export * from './components';
4
4
  export { VTable };
5
- export declare const version = "1.16.0";
5
+ export declare const version = "1.16.1";
package/es/index.js CHANGED
@@ -21,6 +21,6 @@ export { default as Tag } from './components/custom/tag.js';
21
21
  export { default as Radio } from './components/custom/radio.js';
22
22
  export { default as CheckBox } from './components/custom/checkBox.js';
23
23
 
24
- const version = "1.16.0";
24
+ const version = "1.16.1";
25
25
 
26
26
  export { version };
@@ -162,6 +162,10 @@ var _sfc_main = defineComponent({
162
162
  return;
163
163
  }
164
164
  try {
165
+ if (props.keepColumnWidthChange) {
166
+ const columnWidthConfig = updateWidthCache(columnWidths.value, pivotColumnWidths.value, vTableInstance.value);
167
+ newOptions = Object.assign(Object.assign({}, newOptions), { columnWidthConfig: columnWidthConfig, columnWidthConfigForRowHeader: columnWidthConfig });
168
+ }
165
169
  switch (props.type) {
166
170
  case 'list':
167
171
  if (vTableInstance.value instanceof ListTable) {
@@ -202,6 +206,19 @@ var _sfc_main = defineComponent({
202
206
  createVTable();
203
207
  }
204
208
  }, { deep: true });
209
+ function updateWidthCache(columnWidths, pivotColumnWidths, table) {
210
+ if (table.isPivotTable()) {
211
+ return pivotColumnWidths;
212
+ }
213
+ const columnWidthConfig = [];
214
+ columnWidths.forEach((width, key) => {
215
+ columnWidthConfig.push({
216
+ key,
217
+ width
218
+ });
219
+ });
220
+ return columnWidthConfig;
221
+ }
205
222
  return (_ctx, _cache) => {
206
223
  return (openBlock(), createElementBlock("div", {
207
224
  ref_key: "vTableContainer",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vue-vtable",
3
- "version": "1.16.0",
3
+ "version": "1.16.1",
4
4
  "description": "The vue version of VTable",
5
5
  "keywords": [
6
6
  "vue",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@visactor/vutils": "~0.19.1",
47
- "@visactor/vtable": "1.16.0"
47
+ "@visactor/vtable": "1.16.1"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@arco-design/web-vue": "^2.11.0",
@@ -87,9 +87,9 @@
87
87
  "axios": "^1.4.0",
88
88
  "eslint-plugin-vue": "^9.26.0",
89
89
  "vue-eslint-parser": "^9.4.2",
90
- "@internal/eslint-config": "0.0.1",
90
+ "@internal/ts-config": "0.0.1",
91
91
  "@internal/bundler": "0.0.1",
92
- "@internal/ts-config": "0.0.1"
92
+ "@internal/eslint-config": "0.0.1"
93
93
  },
94
94
  "scripts": {
95
95
  "start": "vite ./demo",