@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 +1 -1
- package/cjs/index.js +1 -1
- package/cjs/tables/list-table.vue.js +1 -0
- package/cjs/tables/pivot-chart.vue.js +1 -0
- package/cjs/tables/pivot-table.vue.js +1 -0
- package/cjs/tables/utils.d.ts +2 -0
- package/cjs/tables/utils.js +24 -2
- package/dist/vue-vtable.js +26 -3
- package/dist/vue-vtable.min.js +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/tables/list-table.vue.js +2 -1
- package/es/tables/pivot-chart.vue.js +2 -1
- package/es/tables/pivot-table.vue.js +2 -1
- package/es/tables/utils.d.ts +2 -0
- package/es/tables/utils.js +23 -3
- package/package.json +5 -5
package/cjs/index.d.ts
CHANGED
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) {
|
package/cjs/tables/utils.d.ts
CHANGED
|
@@ -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;
|
package/cjs/tables/utils.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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;
|
package/dist/vue-vtable.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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', {
|
package/dist/vue-vtable.min.js
CHANGED
|
@@ -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
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) {
|
package/es/tables/utils.d.ts
CHANGED
|
@@ -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;
|
package/es/tables/utils.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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/
|
|
47
|
-
"@visactor/
|
|
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/
|
|
92
|
-
"@internal/
|
|
91
|
+
"@internal/ts-config": "0.0.1",
|
|
92
|
+
"@internal/eslint-config": "0.0.1"
|
|
93
93
|
},
|
|
94
94
|
"scripts": {
|
|
95
95
|
"start": "vite ./demo",
|