@visactor/vue-vtable 1.9.1 → 1.9.2-alpha.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.9.1";
5
+ export declare const version = "1.9.2-alpha.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.9.1";
43
+ const version = "1.9.2-alpha.1";
44
44
 
45
45
  exports.VTable = VTable__namespace;
46
46
  Object.defineProperty(exports, 'register', {
@@ -35,6 +35,7 @@ var _sfc_main = vue.defineComponent({
35
35
  };
36
36
  vnodes.forEach(vnode => {
37
37
  var _a, _b;
38
+ vnode.props = utils.convertPropsToCamelCase(vnode.props);
38
39
  const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
39
40
  const optionKey = typeMapping[typeName];
40
41
  if (optionKey) {
@@ -41,6 +41,7 @@ var _sfc_main = vue.defineComponent({
41
41
  };
42
42
  flattenedSlots.forEach(vnode => {
43
43
  var _a, _b;
44
+ vnode.props = utils.convertPropsToCamelCase(vnode.props);
44
45
  const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
45
46
  const optionKey = typeMapping[typeName];
46
47
  if (optionKey) {
@@ -41,6 +41,7 @@ var _sfc_main = vue.defineComponent({
41
41
  };
42
42
  flattenedSlots.forEach(vnode => {
43
43
  var _a, _b;
44
+ vnode.props = utils.convertPropsToCamelCase(vnode.props);
44
45
  const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
45
46
  const optionKey = typeMapping[typeName];
46
47
  if (optionKey) {
@@ -1,2 +1,4 @@
1
1
  export declare function flattenVNodes(vnodes: any[]): any[];
2
+ export declare function toCamelCase(str: string): string;
3
+ export declare function convertPropsToCamelCase(props: Record<string, any>): Record<string, any>;
2
4
  export declare function createCustomLayout(children: any): any;
@@ -25,6 +25,19 @@ var VTable__namespace = /*#__PURE__*/_interopNamespaceDefault(VTable);
25
25
  function flattenVNodes(vnodes) {
26
26
  return vnodes.flatMap(vnode => (Array.isArray(vnode.children) ? flattenVNodes(vnode.children) : vnode));
27
27
  }
28
+ function toCamelCase(str) {
29
+ return str.replace(/-([a-z])/g, g => g[1].toUpperCase());
30
+ }
31
+ function convertPropsToCamelCase(props) {
32
+ const newProps = {};
33
+ for (const key in props) {
34
+ if (props.hasOwnProperty(key)) {
35
+ const camelCaseKey = toCamelCase(key);
36
+ newProps[camelCaseKey] = props[key];
37
+ }
38
+ }
39
+ return newProps;
40
+ }
28
41
  function isEventProp(key, props) {
29
42
  return key.startsWith('on') && vutils.isFunction(props[key]);
30
43
  }
@@ -41,7 +54,8 @@ function createCustomLayout(children) {
41
54
  if (!child) {
42
55
  return null;
43
56
  }
44
- const { type, props, children: childChildren } = child;
57
+ const { type, children: childChildren } = child;
58
+ const props = convertPropsToCamelCase(child.props);
45
59
  const componentName = (type === null || type === void 0 ? void 0 : type.symbol) || (type === null || type === void 0 ? void 0 : type.name);
46
60
  const ComponentClass = componentMap[componentName];
47
61
  if (!ComponentClass) {
@@ -73,7 +87,13 @@ function createCustomLayout(children) {
73
87
  function bindComponentEvents(component, props) {
74
88
  Object.keys(props).forEach(key => {
75
89
  if (isEventProp(key, props)) {
76
- const eventName = key.slice(2).toLowerCase();
90
+ let eventName;
91
+ if (key.startsWith('on')) {
92
+ eventName = key.slice(2).toLowerCase();
93
+ }
94
+ else {
95
+ eventName = toCamelCase(key.slice(2)).toLowerCase();
96
+ }
77
97
  component.addEventListener(eventName, props[key]);
78
98
  }
79
99
  });
@@ -81,5 +101,7 @@ function createCustomLayout(children) {
81
101
  return { rootComponent: createComponent(children) };
82
102
  }
83
103
 
104
+ exports.convertPropsToCamelCase = convertPropsToCamelCase;
84
105
  exports.createCustomLayout = createCustomLayout;
85
106
  exports.flattenVNodes = flattenVNodes;
107
+ exports.toCamelCase = toCamelCase;
@@ -26,6 +26,19 @@
26
26
  function flattenVNodes(vnodes) {
27
27
  return vnodes.flatMap(vnode => (Array.isArray(vnode.children) ? flattenVNodes(vnode.children) : vnode));
28
28
  }
29
+ function toCamelCase(str) {
30
+ return str.replace(/-([a-z])/g, g => g[1].toUpperCase());
31
+ }
32
+ function convertPropsToCamelCase(props) {
33
+ const newProps = {};
34
+ for (const key in props) {
35
+ if (props.hasOwnProperty(key)) {
36
+ const camelCaseKey = toCamelCase(key);
37
+ newProps[camelCaseKey] = props[key];
38
+ }
39
+ }
40
+ return newProps;
41
+ }
29
42
  function isEventProp(key, props) {
30
43
  return key.startsWith('on') && vutils.isFunction(props[key]);
31
44
  }
@@ -42,7 +55,8 @@
42
55
  if (!child) {
43
56
  return null;
44
57
  }
45
- const { type, props, children: childChildren } = child;
58
+ const { type, children: childChildren } = child;
59
+ const props = convertPropsToCamelCase(child.props);
46
60
  const componentName = type?.symbol || type?.name;
47
61
  const ComponentClass = componentMap[componentName];
48
62
  if (!ComponentClass) {
@@ -73,7 +87,13 @@
73
87
  function bindComponentEvents(component, props) {
74
88
  Object.keys(props).forEach(key => {
75
89
  if (isEventProp(key, props)) {
76
- const eventName = key.slice(2).toLowerCase();
90
+ let eventName;
91
+ if (key.startsWith('on')) {
92
+ eventName = key.slice(2).toLowerCase();
93
+ }
94
+ else {
95
+ eventName = toCamelCase(key.slice(2)).toLowerCase();
96
+ }
77
97
  component.addEventListener(eventName, props[key]);
78
98
  }
79
99
  });
@@ -339,6 +359,7 @@
339
359
  Menu: 'menu',
340
360
  };
341
361
  vnodes.forEach(vnode => {
362
+ vnode.props = convertPropsToCamelCase(vnode.props);
342
363
  const typeName = vnode.type?.symbol || vnode.type?.name;
343
364
  const optionKey = typeMapping[typeName];
344
365
  if (optionKey) {
@@ -423,6 +444,7 @@
423
444
  'Menu': 'menu',
424
445
  };
425
446
  flattenedSlots.forEach(vnode => {
447
+ vnode.props = convertPropsToCamelCase(vnode.props);
426
448
  const typeName = vnode.type?.symbol || vnode.type?.name;
427
449
  const optionKey = typeMapping[typeName];
428
450
  if (optionKey) {
@@ -499,6 +521,7 @@
499
521
  'Menu': 'menu',
500
522
  };
501
523
  flattenedSlots.forEach(vnode => {
524
+ vnode.props = convertPropsToCamelCase(vnode.props);
502
525
  const typeName = vnode.type?.symbol || vnode.type?.name;
503
526
  const optionKey = typeMapping[typeName];
504
527
  if (optionKey) {
@@ -624,7 +647,7 @@
624
647
  }
625
648
  CheckBox.symbol = 'CheckBox';
626
649
 
627
- const version = "1.9.1";
650
+ const version = "1.9.2-alpha.1";
628
651
 
629
652
  exports.VTable = VTable__namespace;
630
653
  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.flatMap((e=>Array.isArray(e.children)?i(e.children):e))}function u(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,props:l,children:i}=n,u=o[r?.symbol||r?.name];if(!u)return null;const s=new u({...l});!function(e,o){Object.keys(o).forEach((n=>{if(function(e,o){return e.startsWith("on")&&t.isFunction(o[e])}(n,o)){const t=n.slice(2).toLowerCase();e.addEventListener(t,o[n])}}))}(s,l);return function(e){return e?.default?.()||e||[]}(i).forEach((o=>{const n=e(o);n?s.add(n):o.type===Symbol.for("v-fgt")&&o.children.forEach((o=>{const n=e(o);n&&s.add(n)}))})),s}(e)}}const s={...o.ListTable.EVENT_TYPE,...o.PivotTable.EVENT_TYPE,...o.PivotChart.EVENT_TYPE},a={onClickCell:s.CLICK_CELL,onDblClickCell:s.DBLCLICK_CELL,onMouseDownCell:s.MOUSEDOWN_CELL,onMouseUpCell:s.MOUSEUP_CELL,onSelectedCell:s.SELECTED_CELL,onKeyDown:s.KEYDOWN,onMouseEnterTable:s.MOUSEENTER_TABLE,onMouseLeaveTable:s.MOUSELEAVE_TABLE,onMouseDownTable:s.MOUSEDOWN_TABLE,onMouseMoveCell:s.MOUSEMOVE_CELL,onMouseEnterCell:s.MOUSEENTER_CELL,onMouseLeaveCell:s.MOUSELEAVE_CELL,onContextMenuCell:s.CONTEXTMENU_CELL,onResizeColumn:s.RESIZE_COLUMN,onResizeColumnEnd:s.RESIZE_COLUMN_END,onChangeHeaderPosition:s.CHANGE_HEADER_POSITION,onSortClick:s.SORT_CLICK,onFreezeClick:s.FREEZE_CLICK,onScroll:s.SCROLL,onDropdownMenuClick:s.DROPDOWN_MENU_CLICK,onMouseOverChartSymbol:s.MOUSEOVER_CHART_SYMBOL,onDragSelectEnd:s.DRAG_SELECT_END,onDropdownIconClick:s.DROPDOWN_ICON_CLICK,onDropdownMenuClear:s.DROPDOWN_MENU_CLEAR,onTreeHierarchyStateChange:s.TREE_HIERARCHY_STATE_CHANGE,onShowMenu:s.SHOW_MENU,onHideMenu:s.HIDE_MENU,onIconClick:s.ICON_CLICK,onLegendItemClick:s.LEGEND_ITEM_CLICK,onLegendItemHover:s.LEGEND_ITEM_HOVER,onLegendItemUnHover:s.LEGEND_ITEM_UNHOVER,onLegendChange:s.LEGEND_CHANGE,onMouseEnterAxis:s.MOUSEENTER_AXIS,onMouseLeaveAxis:s.MOUSELEAVE_AXIS,onCheckboxStateChange:s.CHECKBOX_STATE_CHANGE,onRadioStateChange:s.RADIO_STATE_CHANGE,onAfterRender:s.AFTER_RENDER,onInitialized:s.INITIALIZED,onPivotSortClick:s.PIVOT_SORT_CLICK,onDrillMenuClick:s.DRILLMENU_CLICK,onVChartEventType:s.VCHART_EVENT_TYPE,onChangCellValue:s.CHANGE_CELL_VALUE,onMousedownFillHandle:s.MOUSEDOWN_FILL_HANDLE,onDragFillHandleEnd:s.DRAG_FILL_HANDLE_END,onDblclickFillHandle:s.DBLCLICK_FILL_HANDLE,onScrollVerticalEnd:s.SCROLL_VERTICAL_END,onScrollHorizontalEnd:s.SCROLL_HORIZONTAL_END},c=Object.keys(a);var d=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},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},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},onChangCellValue:{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:c,setup(e,{expose:t,emit:r}){const l=e,i=n.ref(null),u=n.shallowRef(null);t({vTableInstance:u});const s=n.computed((()=>"number"==typeof l.width?`${l.width}px`:l.width)),d=n.computed((()=>"number"==typeof l.height?`${l.height}px`:l.height)),p=r,C=()=>{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,n=(e,o)=>{u.value=new e(i.value,o)};try{switch(l.type){case"list":n(o.ListTable,{...l.options,records:e()});break;case"pivot":n(o.PivotTable,{...l.options,records:e()});break;case"chart":n(o.PivotChart,{...l.options,records:e()})}t=u.value,c.forEach((e=>{t.on(a[e],(o=>{p(e,o)}))})),l.onReady?.(u.value,!0)}catch(e){}var t},m=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(C),n.onBeforeUnmount((()=>u.value?.release())),n.watch((()=>l.options),(e=>{u.value?m(e):C()}),{deep:!0}),n.watch((()=>l.records),((e,o)=>{u.value?m({...l.options,records:e}):C()}),{deep:!0}),(e,o)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"vTableContainer",ref:i,style:n.normalizeStyle([{width:s.value,height:d.value},{position:"relative"}])},null,4))}}),p=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(),s=n.computed((()=>{const e=function(e){const o={columns:[],tooltip:{},menu:{}},n={ListColumn:"columns",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{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:s,width:a}=r??o.getCellRect(t,n),c=l.customLayout({table:o,row:n,col:t,rect:r,record:i,height:s,width:a})[0],{rootComponent:d}=u(c);return{rootContainer:d,renderDefault:!1}})),Array.isArray(o[r])?o[r].push(e.props):o[r]=e.props)})),o}(i(l.default?.()||[]));return{...t.options,columns:e.columns.length?e.columns:t.options.columns,tooltip:e.tooltip||t.options.tooltip,menu:e.menu||t.options.menu}}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(d,n.mergeProps({type:"list",options:s.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))}}),C=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(),u=n.computed((()=>{const e=i(l.default?.()||[]),o={columns:[],columnHeaderTitle:[],rows:[],rowHeaderTitle:[],indicators:[],corner:Object,tooltip:Object,menu:Object},n={PivotColumnDimension:"columns",PivotColumnHeaderTitle:"columnHeaderTitle",PivotRowDimension:"rows",PivotRowHeaderTitle:"rowHeaderTitle",PivotCorner:"corner",PivotIndicator:"indicators",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{const t=e.type?.symbol||e.type?.name,r=n[t];r&&(Array.isArray(o[r])?o[r].push(e.props):o[r]=e.props)})),{...t.options,columns:o.columns.length?o.columns:t.options.columns,columnHeaderTitle:o.columnHeaderTitle.length?o.columnHeaderTitle:t.options.columnHeaderTitle,rows:o.rows.length?o.rows:t.options.rows,rowHeaderTitle:o.rowHeaderTitle.length?o.rowHeaderTitle:t.options.rowHeaderTitle,indicators:o.indicators.length?o.indicators:t.options.indicators,corner:t.options.corner||o.corner,tooltip:t.options.tooltip||o.tooltip,menu:t.options.menu||o.menu}}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(d,n.mergeProps({type:"pivot",options:u.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))}}),m=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(),u=n.computed((()=>{const e=i(l.default?.()||[]),o={columns:[],columnHeaderTitle:[],rows:[],rowHeaderTitle:[],indicators:[],corner:Object,tooltip:Object,menu:Object},n={PivotColumnDimension:"columns",PivotColumnHeaderTitle:"columnHeaderTitle",PivotRowDimension:"rows",PivotRowHeaderTitle:"rowHeaderTitle",PivotCorner:"corner",PivotIndicator:"indicators",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{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)})),{...t.options,columns:o.columns.length?o.columns:t.options.columns,columnHeaderTitle:o.columnHeaderTitle.length?o.columnHeaderTitle:t.options.columnHeaderTitle,rows:o.rows.length?o.rows:t.options.rows,rowHeaderTitle:o.rowHeaderTitle.length?o.rowHeaderTitle:t.options.rowHeaderTitle,indicators:o.indicators.length?o.indicators:t.options.indicators,corner:o.corner||t.options.corner,tooltip:o.tooltip||t.options.tooltip,menu:o.menu||t.options.menu}}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(d,n.mergeProps({type:"chart",options:u.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 y(e){return null}function E(e){return null}function h(e){return null}function T(e){return null}function v(e){return null}function b(e){return null}function L(e){return null}function f(e){return null}function g(e){return null}function _(){return null}function w(){return null}function H(){return null}function M(e){return null}function O(e){return null}function S(e){return null}y.symbol="ListColumn",E.symbol="PivotColumnDimension",h.symbol="PivotRowDimension",T.symbol="PivotColumnHeaderTitle",v.symbol="PivotRowHeaderTitle",b.symbol="PivotIndicator",L.symbol="PivotCorner",f.symbol="Menu",g.symbol="Tooltip",_.symbol="Group",w.symbol="Image",H.symbol="Text",M.symbol="Tag",O.symbol="Radio",S.symbol="CheckBox";e.VTable=l,Object.defineProperty(e,"register",{enumerable:!0,get:function(){return o.register}}),e.CheckBox=S,e.Group=_,e.Image=w,e.ListColumn=y,e.ListTable=p,e.Menu=f,e.PivotChart=m,e.PivotColumnDimension=E,e.PivotColumnHeaderTitle=T,e.PivotCorner=L,e.PivotIndicator=b,e.PivotRowDimension=h,e.PivotRowHeaderTitle=v,e.PivotTable=C,e.Radio=O,e.Tag=M,e.Text=H,e.Tooltip=g,e.registerChartModule=(e,o)=>{l.register.chartModule(e,o)},e.version="1.9.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.flatMap((e=>Array.isArray(e.children)?i(e.children):e))}function u(e){return e.replace(/-([a-z])/g,(e=>e[1].toUpperCase()))}function s(e){const o={};for(const n in e)if(e.hasOwnProperty(n)){o[u(n)]=e[n]}return o}function a(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,i=s(n.props),a=o[r?.symbol||r?.name];if(!a)return null;const c=new a({...i});!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():u(n.slice(2)).toLowerCase(),e.addEventListener(t,o[n])}}))}(c,i);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)}}const c={...o.ListTable.EVENT_TYPE,...o.PivotTable.EVENT_TYPE,...o.PivotChart.EVENT_TYPE},d={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,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,onChangCellValue: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},p=Object.keys(d);var C=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},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},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},onChangCellValue:{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:p,setup(e,{expose:t,emit:r}){const l=e,i=n.ref(null),u=n.shallowRef(null);t({vTableInstance:u});const s=n.computed((()=>"number"==typeof l.width?`${l.width}px`:l.width)),a=n.computed((()=>"number"==typeof l.height?`${l.height}px`:l.height)),c=r,C=()=>{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,n=(e,o)=>{u.value=new e(i.value,o)};try{switch(l.type){case"list":n(o.ListTable,{...l.options,records:e()});break;case"pivot":n(o.PivotTable,{...l.options,records:e()});break;case"chart":n(o.PivotChart,{...l.options,records:e()})}t=u.value,p.forEach((e=>{t.on(d[e],(o=>{c(e,o)}))})),l.onReady?.(u.value,!0)}catch(e){}var t},m=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(C),n.onBeforeUnmount((()=>u.value?.release())),n.watch((()=>l.options),(e=>{u.value?m(e):C()}),{deep:!0}),n.watch((()=>l.records),((e,o)=>{u.value?m({...l.options,records:e}):C()}),{deep:!0}),(e,o)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"vTableContainer",ref:i,style:n.normalizeStyle([{width:s.value,height:a.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(),u=n.computed((()=>{const e=function(e){const o={columns:[],tooltip:{},menu:{}},n={ListColumn:"columns",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=s(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:s}=r??o.getCellRect(t,n),c=l.customLayout({table:o,row:n,col:t,rect:r,record:i,height:u,width:s})[0],{rootComponent:d}=a(c);return{rootContainer:d,renderDefault:!1}})),Array.isArray(o[r])?o[r].push(e.props):o[r]=e.props)})),o}(i(l.default?.()||[]));return{...t.options,columns:e.columns.length?e.columns:t.options.columns,tooltip:e.tooltip||t.options.tooltip,menu:e.menu||t.options.menu}}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(C,n.mergeProps({type:"list",options:u.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))}}),y=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(),u=n.computed((()=>{const e=i(l.default?.()||[]),o={columns:[],columnHeaderTitle:[],rows:[],rowHeaderTitle:[],indicators:[],corner:Object,tooltip:Object,menu:Object},n={PivotColumnDimension:"columns",PivotColumnHeaderTitle:"columnHeaderTitle",PivotRowDimension:"rows",PivotRowHeaderTitle:"rowHeaderTitle",PivotCorner:"corner",PivotIndicator:"indicators",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=s(e.props);const t=e.type?.symbol||e.type?.name,r=n[t];r&&(Array.isArray(o[r])?o[r].push(e.props):o[r]=e.props)})),{...t.options,columns:o.columns.length?o.columns:t.options.columns,columnHeaderTitle:o.columnHeaderTitle.length?o.columnHeaderTitle:t.options.columnHeaderTitle,rows:o.rows.length?o.rows:t.options.rows,rowHeaderTitle:o.rowHeaderTitle.length?o.rowHeaderTitle:t.options.rowHeaderTitle,indicators:o.indicators.length?o.indicators:t.options.indicators,corner:t.options.corner||o.corner,tooltip:t.options.tooltip||o.tooltip,menu:t.options.menu||o.menu}}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(C,n.mergeProps({type:"pivot",options:u.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))}}),E=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(),u=n.computed((()=>{const e=i(l.default?.()||[]),o={columns:[],columnHeaderTitle:[],rows:[],rowHeaderTitle:[],indicators:[],corner:Object,tooltip:Object,menu:Object},n={PivotColumnDimension:"columns",PivotColumnHeaderTitle:"columnHeaderTitle",PivotRowDimension:"rows",PivotRowHeaderTitle:"rowHeaderTitle",PivotCorner:"corner",PivotIndicator:"indicators",Tooltip:"tooltip",Menu:"menu"};return e.forEach((e=>{e.props=s(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)})),{...t.options,columns:o.columns.length?o.columns:t.options.columns,columnHeaderTitle:o.columnHeaderTitle.length?o.columnHeaderTitle:t.options.columnHeaderTitle,rows:o.rows.length?o.rows:t.options.rows,rowHeaderTitle:o.rowHeaderTitle.length?o.rowHeaderTitle:t.options.rowHeaderTitle,indicators:o.indicators.length?o.indicators:t.options.indicators,corner:o.corner||t.options.corner,tooltip:o.tooltip||t.options.tooltip,menu:o.menu||t.options.menu}}));return o({vTableInstance:n.computed((()=>r.value?.vTableInstance||null))}),(e,o)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createVNode(C,n.mergeProps({type:"chart",options:u.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 h(e){return null}function T(e){return null}function v(e){return null}function b(e){return null}function f(e){return null}function L(e){return null}function g(e){return null}function w(e){return null}function _(e){return null}function H(){return null}function M(){return null}function O(){return null}function S(e){return null}function q(e){return null}function D(e){return null}h.symbol="ListColumn",T.symbol="PivotColumnDimension",v.symbol="PivotRowDimension",b.symbol="PivotColumnHeaderTitle",f.symbol="PivotRowHeaderTitle",L.symbol="PivotIndicator",g.symbol="PivotCorner",w.symbol="Menu",_.symbol="Tooltip",H.symbol="Group",M.symbol="Image",O.symbol="Text",S.symbol="Tag",q.symbol="Radio",D.symbol="CheckBox";e.VTable=l,Object.defineProperty(e,"register",{enumerable:!0,get:function(){return o.register}}),e.CheckBox=D,e.Group=H,e.Image=M,e.ListColumn=h,e.ListTable=m,e.Menu=w,e.PivotChart=E,e.PivotColumnDimension=T,e.PivotColumnHeaderTitle=b,e.PivotCorner=g,e.PivotIndicator=L,e.PivotRowDimension=v,e.PivotRowHeaderTitle=f,e.PivotTable=y,e.Radio=q,e.Tag=S,e.Text=O,e.Tooltip=_,e.registerChartModule=(e,o)=>{l.register.chartModule(e,o)},e.version="1.9.2-alpha.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.9.1";
5
+ export declare const version = "1.9.2-alpha.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.9.1";
24
+ const version = "1.9.2-alpha.1";
25
25
 
26
26
  export { version };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, useSlots, computed, openBlock, createElementBlock, Fragment, createVNode, mergeProps, renderSlot } from 'vue';
2
- import { flattenVNodes, createCustomLayout } from './utils.js';
2
+ import { flattenVNodes, convertPropsToCamelCase, createCustomLayout } from './utils.js';
3
3
  import _sfc_main$1 from './base-table.vue.js';
4
4
 
5
5
  var _sfc_main = defineComponent({
@@ -33,6 +33,7 @@ var _sfc_main = defineComponent({
33
33
  };
34
34
  vnodes.forEach(vnode => {
35
35
  var _a, _b;
36
+ vnode.props = convertPropsToCamelCase(vnode.props);
36
37
  const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
37
38
  const optionKey = typeMapping[typeName];
38
39
  if (optionKey) {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, shallowRef, useSlots, computed, openBlock, createElementBlock, Fragment, createVNode, mergeProps, renderSlot } from 'vue';
2
- import { flattenVNodes } from './utils.js';
2
+ import { flattenVNodes, convertPropsToCamelCase } from './utils.js';
3
3
  import _sfc_main$1 from './base-table.vue.js';
4
4
 
5
5
  var _sfc_main = defineComponent({
@@ -39,6 +39,7 @@ var _sfc_main = defineComponent({
39
39
  };
40
40
  flattenedSlots.forEach(vnode => {
41
41
  var _a, _b;
42
+ vnode.props = convertPropsToCamelCase(vnode.props);
42
43
  const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
43
44
  const optionKey = typeMapping[typeName];
44
45
  if (optionKey) {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, shallowRef, useSlots, computed, openBlock, createElementBlock, Fragment, createVNode, mergeProps, renderSlot } from 'vue';
2
- import { flattenVNodes } from './utils.js';
2
+ import { flattenVNodes, convertPropsToCamelCase } from './utils.js';
3
3
  import _sfc_main$1 from './base-table.vue.js';
4
4
 
5
5
  var _sfc_main = defineComponent({
@@ -39,6 +39,7 @@ var _sfc_main = defineComponent({
39
39
  };
40
40
  flattenedSlots.forEach(vnode => {
41
41
  var _a, _b;
42
+ vnode.props = convertPropsToCamelCase(vnode.props);
42
43
  const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
43
44
  const optionKey = typeMapping[typeName];
44
45
  if (optionKey) {
@@ -1,2 +1,4 @@
1
1
  export declare function flattenVNodes(vnodes: any[]): any[];
2
+ export declare function toCamelCase(str: string): string;
3
+ export declare function convertPropsToCamelCase(props: Record<string, any>): Record<string, any>;
2
4
  export declare function createCustomLayout(children: any): any;
@@ -4,6 +4,19 @@ import { isFunction } from '@visactor/vutils';
4
4
  function flattenVNodes(vnodes) {
5
5
  return vnodes.flatMap(vnode => (Array.isArray(vnode.children) ? flattenVNodes(vnode.children) : vnode));
6
6
  }
7
+ function toCamelCase(str) {
8
+ return str.replace(/-([a-z])/g, g => g[1].toUpperCase());
9
+ }
10
+ function convertPropsToCamelCase(props) {
11
+ const newProps = {};
12
+ for (const key in props) {
13
+ if (props.hasOwnProperty(key)) {
14
+ const camelCaseKey = toCamelCase(key);
15
+ newProps[camelCaseKey] = props[key];
16
+ }
17
+ }
18
+ return newProps;
19
+ }
7
20
  function isEventProp(key, props) {
8
21
  return key.startsWith('on') && isFunction(props[key]);
9
22
  }
@@ -20,7 +33,8 @@ function createCustomLayout(children) {
20
33
  if (!child) {
21
34
  return null;
22
35
  }
23
- const { type, props, children: childChildren } = child;
36
+ const { type, children: childChildren } = child;
37
+ const props = convertPropsToCamelCase(child.props);
24
38
  const componentName = (type === null || type === void 0 ? void 0 : type.symbol) || (type === null || type === void 0 ? void 0 : type.name);
25
39
  const ComponentClass = componentMap[componentName];
26
40
  if (!ComponentClass) {
@@ -52,7 +66,13 @@ function createCustomLayout(children) {
52
66
  function bindComponentEvents(component, props) {
53
67
  Object.keys(props).forEach(key => {
54
68
  if (isEventProp(key, props)) {
55
- const eventName = key.slice(2).toLowerCase();
69
+ let eventName;
70
+ if (key.startsWith('on')) {
71
+ eventName = key.slice(2).toLowerCase();
72
+ }
73
+ else {
74
+ eventName = toCamelCase(key.slice(2)).toLowerCase();
75
+ }
56
76
  component.addEventListener(eventName, props[key]);
57
77
  }
58
78
  });
@@ -60,4 +80,4 @@ function createCustomLayout(children) {
60
80
  return { rootComponent: createComponent(children) };
61
81
  }
62
82
 
63
- export { createCustomLayout, flattenVNodes };
83
+ export { convertPropsToCamelCase, createCustomLayout, flattenVNodes, toCamelCase };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vue-vtable",
3
- "version": "1.9.1",
3
+ "version": "1.9.2-alpha.1",
4
4
  "description": "The vue version of VTable",
5
5
  "keywords": [
6
6
  "vue",
@@ -43,8 +43,8 @@
43
43
  "access": "public"
44
44
  },
45
45
  "dependencies": {
46
- "@visactor/vutils": "~0.18.14",
47
- "@visactor/vtable": "1.9.1"
46
+ "@visactor/vtable": "1.9.2-alpha.1",
47
+ "@visactor/vutils": "~0.18.14"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@arco-design/web-vue": "^2.11.0",
@@ -88,8 +88,8 @@
88
88
  "eslint-plugin-vue": "^9.26.0",
89
89
  "vue-eslint-parser": "^9.4.2",
90
90
  "@internal/bundler": "0.0.1",
91
- "@internal/eslint-config": "0.0.1",
92
- "@internal/ts-config": "0.0.1"
91
+ "@internal/ts-config": "0.0.1",
92
+ "@internal/eslint-config": "0.0.1"
93
93
  },
94
94
  "scripts": {
95
95
  "start": "vite ./demo",