vxe-table 4.9.34 → 4.9.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/render/index.js +44 -11
  3. package/es/table/src/body.js +17 -29
  4. package/es/table/src/footer.js +20 -21
  5. package/es/table/src/header.js +15 -8
  6. package/es/table/src/table.js +26 -24
  7. package/es/ui/index.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/index.umd.js +125 -95
  10. package/lib/index.umd.min.js +1 -1
  11. package/lib/style.css +1 -1
  12. package/lib/table/render/index.js +44 -11
  13. package/lib/table/render/index.min.js +1 -1
  14. package/lib/table/src/body.js +17 -28
  15. package/lib/table/src/body.min.js +1 -1
  16. package/lib/table/src/footer.js +21 -22
  17. package/lib/table/src/footer.min.js +1 -1
  18. package/lib/table/src/header.js +15 -7
  19. package/lib/table/src/header.min.js +1 -1
  20. package/lib/table/src/table.js +26 -25
  21. package/lib/table/src/table.min.js +1 -1
  22. package/lib/ui/index.js +1 -1
  23. package/lib/ui/index.min.js +1 -1
  24. package/lib/ui/src/log.js +1 -1
  25. package/lib/ui/src/log.min.js +1 -1
  26. package/package.json +2 -2
  27. package/packages/table/render/index.ts +45 -11
  28. package/packages/table/src/body.ts +20 -28
  29. package/packages/table/src/footer.ts +21 -20
  30. package/packages/table/src/header.ts +14 -8
  31. package/packages/table/src/table.ts +28 -22
  32. /package/es/{iconfont.1735003904604.ttf → iconfont.1735027807086.ttf} +0 -0
  33. /package/es/{iconfont.1735003904604.woff → iconfont.1735027807086.woff} +0 -0
  34. /package/es/{iconfont.1735003904604.woff2 → iconfont.1735027807086.woff2} +0 -0
  35. /package/lib/{iconfont.1735003904604.ttf → iconfont.1735027807086.ttf} +0 -0
  36. /package/lib/{iconfont.1735003904604.woff → iconfont.1735027807086.woff} +0 -0
  37. /package/lib/{iconfont.1735003904604.woff2 → iconfont.1735027807086.woff2} +0 -0
package/lib/ui/index.js CHANGED
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "VxeUI", {
13
13
  exports.version = exports.validators = exports.use = exports.t = exports.setup = exports.setTheme = exports.setLanguage = exports.setIcon = exports.setI18n = exports.setConfig = exports.saveFile = exports.renderer = exports.readFile = exports.print = exports.modal = exports.menus = exports.log = exports.interceptor = exports.hooks = exports.globalResize = exports.globalEvents = exports.getTheme = exports.getIcon = exports.getI18n = exports.getConfig = exports.formats = exports.default = exports.config = exports.commands = exports.clipboard = exports._t = void 0;
14
14
  var _core = require("@vxe-ui/core");
15
15
  var _utils = require("./src/utils");
16
- const version = exports.version = "4.9.34";
16
+ const version = exports.version = "4.9.35";
17
17
  _core.VxeUI.version = version;
18
18
  _core.VxeUI.tableVersion = version;
19
19
  _core.VxeUI.setConfig({
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.hooks=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");const version=exports.version="4.9.34",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0},columnDragConfig:{showIcon:!0,animation:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{maxFixedSize:4},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,iconLayout:"vertical"},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{gt:60},scrollY:{gt:100}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showResponseMsg:!0,showActiveMsg:!0,props:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,hooks=exports.hooks=_core.VxeUI.hooks,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,r){return _core.VxeUI.modal.alert(e,o,r)},confirm(e,o,r){return _core.VxeUI.modal.confirm(e,o,r)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,r){return _core.VxeUI.modal.notification(e,o,r)}});var _default=exports.default=_core.VxeUI;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.hooks=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");const version=exports.version="4.9.35",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0},columnDragConfig:{showIcon:!0,animation:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{maxFixedSize:4},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,iconLayout:"vertical"},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{gt:60},scrollY:{gt:100}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showResponseMsg:!0,showActiveMsg:!0,props:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,hooks=exports.hooks=_core.VxeUI.hooks,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,r){return _core.VxeUI.modal.alert(e,o,r)},confirm(e,o,r){return _core.VxeUI.modal.confirm(e,o,r)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,r){return _core.VxeUI.modal.notification(e,o,r)}});var _default=exports.default=_core.VxeUI;
package/lib/ui/src/log.js CHANGED
@@ -8,6 +8,6 @@ var _core = require("@vxe-ui/core");
8
8
  const {
9
9
  log
10
10
  } = _core.VxeUI;
11
- const version = `table v${"4.9.34"}`;
11
+ const version = `table v${"4.9.35"}`;
12
12
  const warnLog = exports.warnLog = log.create('warn', version);
13
13
  const errLog = exports.errLog = log.create('error', version);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");const log=_core.VxeUI["log"],version="table v4.9.34",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");const log=_core.VxeUI["log"],version="table v4.9.35",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "4.9.34",
3
+ "version": "4.9.35",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -28,7 +28,7 @@
28
28
  "style": "lib/style.css",
29
29
  "typings": "types/index.d.ts",
30
30
  "dependencies": {
31
- "vxe-pc-ui": "^4.3.42"
31
+ "vxe-pc-ui": "^4.3.43"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/resize-observer-browser": "^0.1.11",
@@ -15,6 +15,10 @@ const componentDefaultModelProp = 'modelValue'
15
15
 
16
16
  const defaultCompProps = {}
17
17
 
18
+ function handleDefaultValue (value: any, defaultVal: any, initVal: any) {
19
+ return XEUtils.eqNull(value) ? (XEUtils.eqNull(defaultVal) ? initVal : defaultVal) : value
20
+ }
21
+
18
22
  function parseDate (value: any, props: any) {
19
23
  return value && props.valueFormat ? XEUtils.toStringDate(value, props.valueFormat) : value
20
24
  }
@@ -612,13 +616,25 @@ renderer.mixin({
612
616
  if (cellValue) {
613
617
  const numberInputConfig = getConfig().numberInput || {}
614
618
  if (type === 'float') {
615
- const digits = props.digits || numberInputConfig.digits || 1
619
+ const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true)
620
+ const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 1)
616
621
  cellValue = XEUtils.toFixed(XEUtils.floor(cellValue, digits), digits)
622
+ if (!autoFill) {
623
+ cellValue = XEUtils.toNumber(cellValue)
624
+ }
617
625
  } else if (type === 'amount') {
618
- const digits = props.digits || numberInputConfig.digits || 2
626
+ const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true)
627
+ const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 2)
628
+ const showCurrency = handleDefaultValue(props.showCurrency, numberInputConfig.showCurrency, false)
619
629
  cellValue = XEUtils.commafy(XEUtils.toNumber(cellValue), { digits })
620
- const showCurrency = props.showCurrency
621
- if (XEUtils.isBoolean(showCurrency) ? showCurrency : numberInputConfig.showCurrency) {
630
+ if (!autoFill) {
631
+ const [iStr, dStr] = cellValue.split('.')
632
+ if (dStr) {
633
+ const dRest = dStr.replace(/0+$/, '')
634
+ cellValue = dRest ? [iStr, '.', dRest].join('') : iStr
635
+ }
636
+ }
637
+ if (showCurrency) {
622
638
  cellValue = `${props.currencySymbol || numberInputConfig.currencySymbol || getI18n('vxe.numberInput.currencySymbol') || ''}${cellValue}`
623
639
  }
624
640
  }
@@ -630,18 +646,36 @@ renderer.mixin({
630
646
  const { row, column, _columnIndex } = params
631
647
  const { type } = props
632
648
  // 兼容老模式
633
- const cellValue = XEUtils.isArray(row) ? row[_columnIndex] : XEUtils.get(row, column.field)
634
- if (XEUtils.isNumber(cellValue)) {
649
+ const itemValue = XEUtils.isArray(row) ? row[_columnIndex] : XEUtils.get(row, column.field)
650
+ if (XEUtils.isNumber(itemValue)) {
635
651
  const numberInputConfig = getConfig().numberInput || {}
636
652
  if (type === 'float') {
637
- const digits = props.digits || numberInputConfig.digits || 1
638
- return XEUtils.toFixed(XEUtils.floor(cellValue, digits), digits)
653
+ const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true)
654
+ const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 1)
655
+ let amountLabel = XEUtils.toFixed(XEUtils.floor(itemValue, digits), digits)
656
+ if (!autoFill) {
657
+ amountLabel = XEUtils.toNumber(amountLabel)
658
+ }
659
+ return amountLabel
639
660
  } else if (type === 'amount') {
640
- const digits = props.digits || numberInputConfig.digits || 2
641
- return XEUtils.commafy(XEUtils.toNumber(cellValue), { digits })
661
+ const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true)
662
+ const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 2)
663
+ const showCurrency = handleDefaultValue(props.showCurrency, numberInputConfig.showCurrency, false)
664
+ let amountLabel = XEUtils.commafy(XEUtils.toNumber(itemValue), { digits })
665
+ if (!autoFill) {
666
+ const [iStr, dStr] = amountLabel.split('.')
667
+ if (dStr) {
668
+ const dRest = dStr.replace(/0+$/, '')
669
+ amountLabel = dRest ? [iStr, '.', dRest].join('') : iStr
670
+ }
671
+ }
672
+ if (showCurrency) {
673
+ amountLabel = `${props.currencySymbol || numberInputConfig.currencySymbol || getI18n('vxe.numberInput.currencySymbol') || ''}${amountLabel}`
674
+ }
675
+ return amountLabel
642
676
  }
643
677
  }
644
- return getFuncText(cellValue, 1)
678
+ return getFuncText(itemValue, 1)
645
679
  },
646
680
  renderTableDefault: defaultEditRender,
647
681
  renderTableFilter: defaultFilterRender,
@@ -1,4 +1,4 @@
1
- import { createCommentVNode, defineComponent, TransitionGroup, h, ref, Ref, PropType, inject, nextTick, ComputedRef, onBeforeUnmount, onMounted, onUnmounted } from 'vue'
1
+ import { defineComponent, TransitionGroup, h, ref, Ref, PropType, inject, nextTick, ComputedRef, onBeforeUnmount, onMounted, onUnmounted } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { VxeUI } from '../../ui'
4
4
  import { mergeBodyMethod, getRowid, getRefElem } from './util'
@@ -36,7 +36,7 @@ export default defineComponent({
36
36
 
37
37
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable
38
38
  const { refTableBody, refTableHeader, refTableFooter, refTableLeftBody, refTableRightBody, refScrollXHandleElem, refScrollYHandleElem } = $xeTable.getRefMaps()
39
- const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeSYOpts, computeEmptyOpts, computeKeyboardOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts } = $xeTable.getComputeMaps()
39
+ const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeSYOpts, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts } = $xeTable.getComputeMaps()
40
40
 
41
41
  const refElem = ref() as Ref<HTMLDivElement>
42
42
  const refBodyTable = ref() as Ref<HTMLTableElement>
@@ -762,40 +762,32 @@ export default defineComponent({
762
762
  })
763
763
 
764
764
  const renderVN = () => {
765
- let { fixedColumn, fixedType, tableColumn } = props
766
- const { keyboardConfig, showOverflow: allColumnOverflow, spanMethod, mouseConfig } = tableProps
767
- const { tableData, mergeList, scrollYLoad, isAllOverflow, isDragRowMove } = tableReactData
765
+ const { fixedColumn, fixedType, tableColumn } = props
766
+ const { showOverflow: allColumnOverflow, spanMethod, footerSpanMethod, mouseConfig } = tableProps
767
+ const { tableData, scrollXLoad, scrollYLoad, isAllOverflow, isDragRowMove, expandColumn } = tableReactData
768
768
  const { visibleColumn } = tableInternalData
769
769
  const { slots } = tableContext
770
770
  const rowOpts = computeRowOpts.value
771
771
  const sYOpts = computeSYOpts.value
772
772
  const emptyOpts = computeEmptyOpts.value
773
- const keyboardOpts = computeKeyboardOpts.value
774
773
  const mouseOpts = computeMouseOpts.value
775
774
  const rowDragOpts = computeRowDragOpts.value
776
- // const isMergeLeftFixedExceeded = computeIsMergeLeftFixedExceeded.value
777
- // const isMergeRightFixedExceeded = computeIsMergeRightFixedExceeded.value
778
- // 如果是使用优化模式
775
+
776
+ let renderColumnList = tableColumn
777
+
779
778
  if (fixedType) {
780
- // 如果存在展开行使用全量渲染
781
- if (!tableReactData.expandColumn && (scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow))) {
782
- if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
783
- tableColumn = fixedColumn
779
+ renderColumnList = visibleColumn
780
+ // 如果是使用优化模式
781
+ if (scrollXLoad || scrollYLoad || (allColumnOverflow && isAllOverflow)) {
782
+ // 如果不支持优化模式
783
+ if (expandColumn || spanMethod || footerSpanMethod) {
784
+ renderColumnList = visibleColumn
784
785
  } else {
785
- tableColumn = visibleColumn
786
- // 检查固定列是否被合并,合并范围是否超出固定列
787
- // if (mergeList.length && !isMergeLeftFixedExceeded && fixedType === 'left') {
788
- // tableColumn = fixedColumn
789
- // } else if (mergeList.length && !isMergeRightFixedExceeded && fixedType === 'right') {
790
- // tableColumn = fixedColumn
791
- // } else {
792
- // tableColumn = visibleColumn
793
- // }
786
+ renderColumnList = fixedColumn || []
794
787
  }
795
- } else {
796
- tableColumn = visibleColumn
797
788
  }
798
789
  }
790
+
799
791
  let emptyContent: string | VxeComponentSlotType | VxeComponentSlotType[]
800
792
  const emptySlot = slots ? slots.empty : null
801
793
  if (emptySlot) {
@@ -824,7 +816,7 @@ export default defineComponent({
824
816
  ...ons
825
817
  }, [
826
818
  fixedType
827
- ? createCommentVNode()
819
+ ? renderEmptyElement($xeTable)
828
820
  : h('div', {
829
821
  ref: refBodyXSpace,
830
822
  class: 'vxe-body--x-space'
@@ -846,7 +838,7 @@ export default defineComponent({
846
838
  */
847
839
  h('colgroup', {
848
840
  ref: refBodyColgroup
849
- }, (tableColumn as any[]).map((column, $columnIndex) => {
841
+ }, (renderColumnList as any[]).map((column, $columnIndex) => {
850
842
  return h('col', {
851
843
  name: column.id,
852
844
  key: $columnIndex
@@ -861,11 +853,11 @@ export default defineComponent({
861
853
  name: `vxe-body--row-list${isDragRowMove ? '' : '-disabled'}`,
862
854
  tag: 'tbody'
863
855
  }, {
864
- default: () => renderRows(fixedType, tableData, tableColumn)
856
+ default: () => renderRows(fixedType, tableData, renderColumnList)
865
857
  })
866
858
  : h('tbody', {
867
859
  ref: refBodyTBody
868
- }, renderRows(fixedType, tableData, tableColumn))
860
+ }, renderRows(fixedType, tableData, renderColumnList))
869
861
  ]),
870
862
  h('div', {
871
863
  class: 'vxe-table--checkbox-range'
@@ -1,11 +1,11 @@
1
- import { createCommentVNode, defineComponent, TransitionGroup, h, ref, Ref, PropType, inject, nextTick, onMounted, onUnmounted } from 'vue'
1
+ import { defineComponent, TransitionGroup, h, ref, Ref, PropType, inject, nextTick, onMounted, onUnmounted } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { VxeUI } from '../../ui'
4
4
  import { updateCellTitle, getPropClass, setScrollLeft } from '../../ui/src/dom'
5
5
 
6
6
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeColumnPropTypes, VxeTableDefines } from '../../../types'
7
7
 
8
- const { renderer } = VxeUI
8
+ const { renderer, renderEmptyElement } = VxeUI
9
9
 
10
10
  const renderType = 'footer'
11
11
 
@@ -228,8 +228,8 @@ export default defineComponent({
228
228
  : [])
229
229
  }
230
230
 
231
- const renderHeads = (footerTableData: any[]) => {
232
- const { fixedType, tableColumn } = props
231
+ const renderHeads = (renderColumnList: VxeTableDefines.ColumnInfo[]) => {
232
+ const { fixedType, footerTableData } = props
233
233
  const { footerRowClassName, footerRowStyle } = tableProps
234
234
  const { isDragColMove } = tableReactData
235
235
  const columnOpts = computeColumnOpts.value
@@ -250,7 +250,7 @@ export default defineComponent({
250
250
  ],
251
251
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
252
252
  }, {
253
- default: () => renderRows(tableColumn, footerTableData, row, $rowIndex, _rowIndex)
253
+ default: () => renderRows(renderColumnList, footerTableData, row, $rowIndex, _rowIndex)
254
254
  })
255
255
  }
256
256
  return h('tr', {
@@ -260,27 +260,28 @@ export default defineComponent({
260
260
  footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
261
261
  ],
262
262
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
263
- }, renderRows(tableColumn, footerTableData, row, $rowIndex, _rowIndex))
263
+ }, renderRows(renderColumnList, footerTableData, row, $rowIndex, _rowIndex))
264
264
  })
265
265
  }
266
266
 
267
267
  const renderVN = () => {
268
- let { fixedType, fixedColumn, tableColumn, footerTableData } = props
269
- const { footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps
268
+ const { fixedType, fixedColumn, tableColumn } = props
269
+ const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps
270
270
  const { visibleColumn } = tableInternalData
271
- const { scrollXLoad, scrollbarWidth, mergeFooterList } = tableReactData
271
+ const { scrollbarWidth } = tableReactData
272
+
273
+ let renderColumnList = tableColumn
272
274
 
273
- // 如果是使用优化模式
274
275
  if (fixedType) {
275
- // 如果存在展开行使用全量渲染
276
- if (!tableReactData.expandColumn && (scrollXLoad || allColumnFooterOverflow)) {
277
- if (!mergeFooterList.length || !footerSpanMethod) {
278
- tableColumn = fixedColumn
276
+ renderColumnList = visibleColumn
277
+ // 如果是使用优化模式
278
+ if (allColumnFooterOverflow) {
279
+ // 如果不支持优化模式
280
+ if (spanMethod || footerSpanMethod) {
281
+ renderColumnList = visibleColumn
279
282
  } else {
280
- tableColumn = visibleColumn
283
+ renderColumnList = fixedColumn || []
281
284
  }
282
- } else {
283
- tableColumn = visibleColumn
284
285
  }
285
286
  }
286
287
 
@@ -296,7 +297,7 @@ export default defineComponent({
296
297
  ...ons
297
298
  }, [
298
299
  fixedType
299
- ? createCommentVNode()
300
+ ? renderEmptyElement($xeTable)
300
301
  : h('div', {
301
302
  ref: refFooterXSpace,
302
303
  class: 'vxe-body--x-space'
@@ -314,7 +315,7 @@ export default defineComponent({
314
315
  */
315
316
  h('colgroup', {
316
317
  ref: refFooterColgroup
317
- }, tableColumn.map((column, $columnIndex) => {
318
+ }, renderColumnList.map((column, $columnIndex) => {
318
319
  return h('col', {
319
320
  name: column.id,
320
321
  key: $columnIndex
@@ -331,7 +332,7 @@ export default defineComponent({
331
332
  */
332
333
  h('tfoot', {
333
334
  ref: refFooterTFoot
334
- }, renderHeads(footerTableData))
335
+ }, renderHeads(renderColumnList))
335
336
  ])
336
337
  ])
337
338
  }
@@ -1,4 +1,4 @@
1
- import { createCommentVNode, defineComponent, TransitionGroup, h, ref, Ref, PropType, inject, nextTick, watch, onMounted, onUnmounted } from 'vue'
1
+ import { defineComponent, TransitionGroup, h, ref, Ref, PropType, inject, nextTick, watch, onMounted, onUnmounted } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { VxeUI } from '../../ui'
4
4
  import { convertHeaderColumnToRows, getColReMinWidth } from './util'
@@ -6,7 +6,7 @@ import { hasClass, getOffsetPos, addClass, removeClass } from '../../ui/src/dom'
6
6
 
7
7
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeTableDefines, VxeColumnPropTypes } from '../../../types'
8
8
 
9
- const { renderer } = VxeUI
9
+ const { renderer, renderEmptyElement } = VxeUI
10
10
 
11
11
  const renderType = 'header'
12
12
 
@@ -311,18 +311,24 @@ export default defineComponent({
311
311
 
312
312
  const renderVN = () => {
313
313
  const { fixedType, fixedColumn, tableColumn } = props
314
- const { showHeaderOverflow: allColumnHeaderOverflow } = tableProps
315
- const { isGroup, scrollXLoad, scrollbarWidth } = tableReactData
314
+ const { showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps
315
+ const { isGroup, scrollbarWidth } = tableReactData
316
316
  const { visibleColumn } = tableInternalData
317
317
  let headerGroups: VxeTableDefines.ColumnInfo[][] = headerColumn.value
318
318
  let renderColumnList = tableColumn as VxeTableDefines.ColumnInfo[]
319
319
  if (isGroup) {
320
320
  renderColumnList = visibleColumn
321
321
  } else {
322
- // 如果是使用优化模式
323
322
  if (fixedType) {
324
- if (scrollXLoad || allColumnHeaderOverflow) {
325
- renderColumnList = fixedColumn as VxeTableDefines.ColumnInfo[]
323
+ renderColumnList = visibleColumn
324
+ // 如果是使用优化模式
325
+ if (allColumnHeaderOverflow) {
326
+ // 如果不支持优化模式
327
+ if (spanMethod || footerSpanMethod) {
328
+ renderColumnList = visibleColumn
329
+ } else {
330
+ renderColumnList = fixedColumn || []
331
+ }
326
332
  }
327
333
  }
328
334
  headerGroups = [renderColumnList]
@@ -333,7 +339,7 @@ export default defineComponent({
333
339
  xid: xID
334
340
  }, [
335
341
  fixedType
336
- ? createCommentVNode()
342
+ ? renderEmptyElement($xeTable)
337
343
  : h('div', {
338
344
  ref: refHeaderXSpace,
339
345
  class: 'vxe-body--x-space'
@@ -1730,14 +1730,13 @@ export default defineComponent({
1730
1730
  }
1731
1731
 
1732
1732
  const updateStyle = () => {
1733
- const { border, showFooter, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod, keyboardConfig } = props
1734
- const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, scrollbarHeight, columnStore, editStore, mergeList, mergeFooterList, isAllOverflow } = reactData
1733
+ const { border, showFooter, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props
1734
+ const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, scrollbarHeight, columnStore, editStore, isAllOverflow, expandColumn } = reactData
1735
1735
  let { visibleColumn, fullColumnIdData, tableHeight, tableWidth, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData
1736
1736
  const containerList = ['main', 'left', 'right']
1737
1737
  const emptyPlaceholderElem = refEmptyPlaceholder.value
1738
1738
  const cellOffsetWidth = computeCellOffsetWidth.value
1739
1739
  const mouseOpts = computeMouseOpts.value
1740
- const keyboardOpts = computeKeyboardOpts.value
1741
1740
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper'])
1742
1741
  if (emptyPlaceholderElem) {
1743
1742
  emptyPlaceholderElem.style.top = `${headerHeight}px`
@@ -1797,10 +1796,16 @@ export default defineComponent({
1797
1796
  if (isGroup) {
1798
1797
  renderColumnList = visibleColumn
1799
1798
  } else {
1800
- // 如果是使用优化模式
1801
1799
  if (fixedType) {
1802
- if (scrollXLoad || allColumnHeaderOverflow) {
1803
- renderColumnList = fixedColumn
1800
+ renderColumnList = visibleColumn
1801
+ // 如果是使用优化模式
1802
+ if (allColumnHeaderOverflow) {
1803
+ // 如果不支持优化模式
1804
+ if (spanMethod || footerSpanMethod) {
1805
+ renderColumnList = visibleColumn
1806
+ } else {
1807
+ renderColumnList = fixedColumn || []
1808
+ }
1804
1809
  }
1805
1810
  }
1806
1811
  }
@@ -1884,19 +1889,19 @@ export default defineComponent({
1884
1889
  let tWidth = tableWidth
1885
1890
  let renderColumnList = tableColumn
1886
1891
 
1887
- // 如果是使用优化模式
1888
1892
  if (fixedType) {
1889
- // 如果存在展开行使用全量渲染
1890
- if (!reactData.expandColumn && (scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow))) {
1891
- if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
1892
- renderColumnList = fixedColumn
1893
- } else {
1893
+ renderColumnList = visibleColumn
1894
+ // 如果是使用优化模式
1895
+ if (scrollXLoad || scrollYLoad || (allColumnOverflow && isAllOverflow)) {
1896
+ // 如果不支持优化模式
1897
+ if (expandColumn || spanMethod || footerSpanMethod) {
1894
1898
  renderColumnList = visibleColumn
1899
+ } else {
1900
+ renderColumnList = fixedColumn || []
1895
1901
  }
1896
- } else {
1897
- renderColumnList = visibleColumn
1898
1902
  }
1899
1903
  }
1904
+
1900
1905
  tWidth = renderColumnList.reduce((previous, column) => previous + column.renderWidth, 0)
1901
1906
 
1902
1907
  if (tableElem) {
@@ -1911,19 +1916,20 @@ export default defineComponent({
1911
1916
  let tWidth = tableWidth
1912
1917
 
1913
1918
  let renderColumnList = tableColumn
1914
- // 如果是使用优化模式
1919
+
1915
1920
  if (fixedType) {
1916
- // 如果存在展开行使用全量渲染
1917
- if (!reactData.expandColumn && (scrollXLoad || allColumnFooterOverflow)) {
1918
- if (!mergeFooterList.length || !footerSpanMethod) {
1919
- renderColumnList = fixedColumn
1920
- } else {
1921
+ renderColumnList = visibleColumn
1922
+ // 如果是使用优化模式
1923
+ if (allColumnFooterOverflow) {
1924
+ // 如果不支持优化模式
1925
+ if (spanMethod || footerSpanMethod) {
1921
1926
  renderColumnList = visibleColumn
1927
+ } else {
1928
+ renderColumnList = fixedColumn || []
1922
1929
  }
1923
- } else {
1924
- renderColumnList = visibleColumn
1925
1930
  }
1926
1931
  }
1932
+
1927
1933
  tWidth = renderColumnList.reduce((previous, column) => previous + column.renderWidth, 0)
1928
1934
 
1929
1935
  if (isNodeElement(wrapperElem)) {