vxe-pc-ui 4.14.28 → 4.14.30

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 (38) hide show
  1. package/dist/all.esm.js +107 -27
  2. package/es/date-panel/src/date-panel.js +4 -3
  3. package/es/date-range-picker/src/date-range-picker.js +77 -2
  4. package/es/ui/index.js +1 -1
  5. package/es/ui/src/log.js +1 -1
  6. package/es/watermark/src/util.js +24 -20
  7. package/lib/date-panel/src/date-panel.js +9 -3
  8. package/lib/date-panel/src/date-panel.min.js +1 -1
  9. package/lib/date-range-picker/src/date-range-picker.js +85 -2
  10. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  11. package/lib/index.umd.js +122 -33
  12. package/lib/index.umd.min.js +1 -1
  13. package/lib/ui/index.js +1 -1
  14. package/lib/ui/index.min.js +1 -1
  15. package/lib/ui/src/log.js +1 -1
  16. package/lib/ui/src/log.min.js +1 -1
  17. package/lib/watermark/src/util.js +26 -26
  18. package/lib/watermark/src/util.min.js +1 -1
  19. package/package.json +1 -1
  20. package/packages/date-panel/src/date-panel.ts +19 -18
  21. package/packages/date-range-picker/src/date-range-picker.ts +78 -3
  22. package/packages/watermark/src/util.ts +26 -22
  23. package/types/components/date-panel.d.ts +19 -2
  24. package/types/components/date-range-picker.d.ts +2 -0
  25. package/types/components/gantt.d.ts +4 -0
  26. package/types/components/table.d.ts +1 -0
  27. /package/es/icon/{iconfont.1780570418794.ttf → iconfont.1780656834468.ttf} +0 -0
  28. /package/es/icon/{iconfont.1780570418794.woff → iconfont.1780656834468.woff} +0 -0
  29. /package/es/icon/{iconfont.1780570418794.woff2 → iconfont.1780656834468.woff2} +0 -0
  30. /package/es/{iconfont.1780570418794.ttf → iconfont.1780656834468.ttf} +0 -0
  31. /package/es/{iconfont.1780570418794.woff → iconfont.1780656834468.woff} +0 -0
  32. /package/es/{iconfont.1780570418794.woff2 → iconfont.1780656834468.woff2} +0 -0
  33. /package/lib/icon/style/{iconfont.1780570418794.ttf → iconfont.1780656834468.ttf} +0 -0
  34. /package/lib/icon/style/{iconfont.1780570418794.woff → iconfont.1780656834468.woff} +0 -0
  35. /package/lib/icon/style/{iconfont.1780570418794.woff2 → iconfont.1780656834468.woff2} +0 -0
  36. /package/lib/{iconfont.1780570418794.ttf → iconfont.1780656834468.ttf} +0 -0
  37. /package/lib/{iconfont.1780570418794.woff → iconfont.1780656834468.woff} +0 -0
  38. /package/lib/{iconfont.1780570418794.woff2 → iconfont.1780656834468.woff2} +0 -0
package/lib/ui/index.js CHANGED
@@ -26,7 +26,7 @@ Object.keys(_core).forEach(function (key) {
26
26
  });
27
27
  var _dynamics = require("../dynamics");
28
28
  var _log = require("./src/log");
29
- const version = exports.version = "4.14.28";
29
+ const version = exports.version = "4.14.30";
30
30
  _core.VxeUI.uiVersion = version;
31
31
  _core.VxeUI.dynamicApp = _dynamics.dynamicApp;
32
32
  function config(options) {
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={version:!0,config:!0,setup:!0},_core=(exports.config=config,exports.default=void 0,exports.setup=setup,exports.version=void 0,require("@vxe-ui/core")),_dynamics=(Object.keys(_core).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_core[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _core[e]}})}),require("../dynamics")),_log=require("./src/log");let version=exports.version="4.14.28";function config(e){return(0,_log.warnLog)("vxe.error.delFunc",["config","setConfig"]),(0,_core.setConfig)(e)}function setup(e){return(0,_log.warnLog)("vxe.error.delFunc",["setup","setConfig"]),(0,_core.setConfig)(e)}_core.VxeUI.uiVersion=version,_core.VxeUI.dynamicApp=_dynamics.dynamicApp,_core.VxeUI.config=config,_core.VxeUI.setup=setup,(0,_core.setConfig)({alert:{},anchor:{},anchorLink:{},avatar:{},backtop:{showIcon:!0,showContent:!0,showTop:!0,showBottom:!0,shadow:!0,threshold:20},badge:{},breadcrumb:{separator:"/"},breadcrumbItem:{},button:{trigger:"hover",prefixTooltip:{enterable:!0},suffixTooltip:{enterable:!0},showDropdownIcon:!0},buttonGroup:{},calendar:{minDate:new Date(1900,0,1),maxDate:new Date(2100,0,1),startDay:1,selectDay:1},card:{border:!0,padding:!0},carousel:{height:200,loop:!0,interval:5e3},carouselItem:{},cascader:{autoClose:!0},checkbox:{},checkboxButton:{},checkboxGroup:{},col:{},collapse:{padding:!0,expandConfig:{showIcon:!0}},collapsePane:{},contextMenu:{autoLocate:!0},countdown:{},colorPicker:{type:"rgb",clearable:!0,showAlpha:!0,clickToCopy:!0,showColorExtractor:!0,showQuick:!0},datePanel:{startDate:new Date(1900,0,1),endDate:new Date(2100,0,1),startDay:1,selectDay:1},datePicker:{shortcutConfig:{align:"left",mode:"text",autoClose:!0},startDay:1,selectDay:1,autoClose:!0,showClearButton:null,showConfirmButton:null},dateRangePicker:{shortcutConfig:{align:"left",mode:"text",autoClose:!0},startDay:1,selectDay:1,separator:" ~ ",autoClose:!0,showClearButton:null,showConfirmButton:null},drawer:{position:"right",showHeader:!0,lockView:!0,mask:!0,showTitleOverflow:!0,showClose:!0,padding:!0,cancelClosable:!0,confirmClosable:!0},empty:{},form:{validConfig:{showErrorMessage:!0,autoPos:!0,theme:"beautify"},tooltipConfig:{enterable:!0},titleAsterisk:!0,titleOverflow:!1,padding:!0},formDesign:{height:400,showHeader:!0,showPc:!0},formGather:{},formGroup:{},formItem:{},formView:{},icon:{},iconPicker:{icons:["home","company","comment","setting","send","envelope","envelope-open","bell","search","print","pc","goods","chart-line","edit","delete","save","folder","microphone","flag","link","location","sunny","rmb","usd","user","add-user","add-users","star","unlock","time","text","feedback","calendar","association-form","cloud-download","cloud-upload","file","subtable","chart-bar-x","chart-bar-y","chart-line","chart-pie","chart-radar"]},image:{draggable:null,showPreview:!0,showPrintButton:!0},imageGroup:{showPreview:!0,showPrintButton:!0},imagePreview:{showPrintButton:!0,maskClosable:!0},input:{startDate:new Date(1900,0,1),endDate:new Date(2100,0,1),startDay:1,selectDay:1,digits:2,controls:!0},layoutAside:{},layoutBody:{backtopConfig:{}},layoutContainer:{},layoutFooter:{},layoutHeader:{},link:{underline:!0},listDesign:{height:400,showPc:!0},listView:{},list:{virtualYConfig:{enabled:!0,gt:100}},loading:{showIcon:!0,showText:!0},menu:{},modal:{top:16,showHeader:!0,minWidth:340,minHeight:140,lockView:!0,mask:!0,duration:3e3,marginSize:0,dblclickZoom:!0,showTitleOverflow:!0,animat:!0,showClose:!0,padding:!0,draggable:!0,showConfirmButton:null,cancelClosable:!0,confirmClosable:!0,zoomConfig:{minimizeMaxSize:10,minimizeVerticalOffset:{top:-24,left:0},minimizeHorizontalOffset:{top:0,left:32}},storageKey:"VXE_MODAL_POSITION"},noticeBar:{},numberInput:{digits:2,autoFill:!0,controlConfig:{enabled:!0,layout:"right",showButton:!0,isWheel:!0,isArrow:!0}},optgroup:{},option:{},pager:{pageSizePlacement:"top"},print:{pageStyle:{}},passwordInput:{controls:!0},printPageBreak:{},pulldown:{},radio:{strict:!0},radioButton:{strict:!0},radioGroup:{strict:!0},rate:{},result:{},row:{},segmented:{},select:{multiCharOverflow:8,radioConfig:{showIcon:!0,trigger:"option"},checkboxConfig:{showIcon:!0,trigger:"option"},remoteConfig:{enabled:!0,autoLoad:!0},virtualYConfig:{enabled:!0,gt:50,oSize:2}},splitter:{resize:!0,itemConfig:{minWidth:40,minHeight:40},resizeConfig:{showTip:!0}},splitterPanel:{},slider:{max:100,min:0},steps:{},switch:{},tabPane:{},tableSelect:{gridConfig:{showOverflow:!0,showHeaderOverflow:!0,showFooterOverflow:!0,rowConfig:{isHover:!0},virtualXConfig:{enabled:!0,gt:0},virtualYConfig:{enabled:!0,gt:0}}},tabs:{},tag:{},textEllipsis:{underline:!0},text:{copyConfig:{showMessage:!0}},textarea:{resize:"none"},timeline:{},timelineItem:{},tip:{},tooltip:{trigger:"hover",theme:"dark",enterDelay:500,leaveDelay:300,isArrow:!0},tree:{indent:20,minHeight:60,radioConfig:{strict:!0},dragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},virtualYConfig:{enabled:!0,gt:50,oSize:2}},treeSelect:{autoClose:null,virtualYConfig:{enabled:!0,gt:0,oSize:2},treeConfig:{maxHeight:300,radioConfig:{},checkboxConfig:{},filterConfig:{autoExpandAll:!0}}},upload:{mode:"all",imageTypes:["jpg","jpeg","png","gif"],showList:!0,showUploadButton:!0,showButtonText:!0,showRemoveButton:!0,showButtonIcon:!0,showPreview:!0,dragToUpload:!0,showLimitSize:!0,showLimitCount:!0,autoSubmit:!0,maxSimultaneousUploads:5,previewImageConfig:{}},watermark:{rotate:-30,gap:[100,100]},table:{},colgroup:{},column:{},toolbar:{},grid:{},gantt:{}});let iconPrefix="vxe-icon-";(0,_core.setIcon)({LOADING:iconPrefix+"spinner roll vxe-loading--default-icon",BUTTON_DROPDOWN:iconPrefix+"arrow-down",BUTTON_LOADING:iconPrefix+"spinner roll",BUTTON_TOOLTIP_ICON:iconPrefix+"question-circle-fill",MENU_ITEM_EXPAND_OPEN:iconPrefix+"arrow-down rotate180",MENU_ITEM_EXPAND_CLOSE:iconPrefix+"arrow-down",SELECT_LOADED:iconPrefix+"spinner roll",SELECT_OPEN:iconPrefix+"caret-down rotate180",SELECT_CLOSE:iconPrefix+"caret-down",SELECT_ADD_OPTION:iconPrefix+"add",ICON_PICKER_OPEN:iconPrefix+"caret-down rotate180",ICON_PICKER_CLOSE:iconPrefix+"caret-down",PAGER_HOME:iconPrefix+"home-page",PAGER_END:iconPrefix+"end-page",PAGER_JUMP_PREV:iconPrefix+"arrow-double-left",PAGER_JUMP_NEXT:iconPrefix+"arrow-double-right",PAGER_PREV_PAGE:iconPrefix+"arrow-left",PAGER_NEXT_PAGE:iconPrefix+"arrow-right",PAGER_JUMP_MORE:iconPrefix+"ellipsis-h",RADIO_CHECKED:iconPrefix+"radio-checked-fill",RADIO_UNCHECKED:iconPrefix+"radio-unchecked",RADIO_DISABLED_UNCHECKED:iconPrefix+"radio-unchecked-fill",CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",CHECKBOX_DISABLED_UNCHECKED:iconPrefix+"checkbox-unchecked-fill",INPUT_CLEAR:iconPrefix+"error-circle-fill",INPUT_SEARCH:iconPrefix+"search",INPUT_PLUS_NUM:iconPrefix+"caret-up",INPUT_MINUS_NUM:iconPrefix+"caret-down",NUMBER_INPUT_MINUS_NUM:iconPrefix+"minus",NUMBER_INPUT_PLUS_NUM:iconPrefix+"add",DATE_PICKER_DATE:iconPrefix+"calendar",PASSWORD_INPUT_SHOW_PWD:iconPrefix+"eye-fill-close",PASSWORD_INPUT_HIDE_PWD:iconPrefix+"eye-fill",MODAL_ZOOM_MIN:iconPrefix+"minus",MODAL_ZOOM_REVERT:iconPrefix+"recover",MODAL_ZOOM_IN:iconPrefix+"square",MODAL_ZOOM_OUT:iconPrefix+"maximize",MODAL_CLOSE:iconPrefix+"close",MODAL_INFO:iconPrefix+"info-circle-fill",MODAL_SUCCESS:iconPrefix+"success-circle-fill",MODAL_WARNING:iconPrefix+"warning-circle-fill",MODAL_ERROR:iconPrefix+"error-circle-fill",MODAL_QUESTION:iconPrefix+"question-circle-fill",MODAL_LOADING:iconPrefix+"spinner roll",DRAWER_CLOSE:iconPrefix+"close",FORM_PREFIX:iconPrefix+"question-circle-fill",FORM_SUFFIX:iconPrefix+"question-circle-fill",FORM_FOLDING:iconPrefix+"arrow-up rotate180",FORM_UNFOLDING:iconPrefix+"arrow-up",FORM_VALID_ERROR_ICON:iconPrefix+"warning-circle-fill",FORM_DESIGN_STYLE_SETTING:iconPrefix+"layout",FORM_DESIGN_PROPS_PC:iconPrefix+"pc",FORM_DESIGN_PROPS_MOBILE:iconPrefix+"mobile",FORM_DESIGN_PROPS_ADD:iconPrefix+"add",FORM_DESIGN_PROPS_EDIT:iconPrefix+"edit",FORM_DESIGN_WIDGET_ADD:iconPrefix+"square-plus-fill",FORM_DESIGN_WIDGET_COPY:iconPrefix+"copy",FORM_DESIGN_WIDGET_DELETE:iconPrefix+"delete",FORM_DESIGN_WIDGET_SWAP_LR:iconPrefix+"swap",FORM_DESIGN_WIDGET_OPTION_DELETE:iconPrefix+"delete",FORM_DESIGN_WIDGET_OPTION_EXPAND_OPEN:iconPrefix+"square-plus",FORM_DESIGN_WIDGET_OPTION_EXPAND_CLOSE:iconPrefix+"square-minus",LIST_DESIGN_FIELD_SETTING:iconPrefix+"custom-column",LIST_DESIGN_LIST_SETTING:iconPrefix+"menu",LIST_DESIGN_LIST_SETTING_SEARCH_DELETE:iconPrefix+"delete",LIST_DESIGN_LIST_SETTING_ACTIVE_DELETE:iconPrefix+"delete",UPLOAD_FILE_ERROR:iconPrefix+"warning-circle-fill",UPLOAD_FILE_ADD:iconPrefix+"upload",UPLOAD_FILE_REMOVE:iconPrefix+"delete",UPLOAD_FILE_DOWNLOAD:iconPrefix+"download",UPLOAD_IMAGE_UPLOAD:iconPrefix+"upload",UPLOAD_IMAGE_RE_UPLOAD:iconPrefix+"repeat",UPLOAD_IMAGE_ADD:iconPrefix+"add",UPLOAD_IMAGE_REMOVE:iconPrefix+"close",UPLOAD_LOADING:iconPrefix+"spinner roll vxe-loading--default-icon",UPLOAD_FILE_TYPE_DEFAULT:iconPrefix+"file",UPLOAD_FILE_TYPE_XLSX:iconPrefix+"file-excel",UPLOAD_FILE_TYPE_XLS:iconPrefix+"file-excel",UPLOAD_FILE_TYPE_PDF:iconPrefix+"file-pdf",UPLOAD_FILE_TYPE_PNG:iconPrefix+"file-image",UPLOAD_FILE_TYPE_GIF:iconPrefix+"file-image",UPLOAD_FILE_TYPE_JPG:iconPrefix+"file-image",UPLOAD_FILE_TYPE_JPEG:iconPrefix+"file-image",UPLOAD_FILE_TYPE_MD:iconPrefix+"file-markdown",UPLOAD_FILE_TYPE_PPD:iconPrefix+"file-ppt",UPLOAD_FILE_TYPE_DOCX:iconPrefix+"file-word",UPLOAD_FILE_TYPE_DOC:iconPrefix+"file-word",UPLOAD_FILE_TYPE_ZIP:iconPrefix+"file-zip",UPLOAD_FILE_TYPE_TXT:iconPrefix+"file-txt",IMAGE_PREVIEW_CLOSE:iconPrefix+"close",IMAGE_PREVIEW_PREVIOUS:iconPrefix+"arrow-left",IMAGE_PREVIEW_NEXT:iconPrefix+"arrow-right",IMAGE_PREVIEW_PCT_FULL:iconPrefix+"pct-full",IMAGE_PREVIEW_PCT_1_1:iconPrefix+"pct-1-1",IMAGE_PREVIEW_ZOOM_OUT:iconPrefix+"search-zoom-out",IMAGE_PREVIEW_ZOOM_IN:iconPrefix+"search-zoom-in",IMAGE_PREVIEW_ROTATE_LEFT:iconPrefix+"rotate-left",IMAGE_PREVIEW_ROTATE_RIGHT:iconPrefix+"rotate-right",IMAGE_PREVIEW_PRINT:iconPrefix+"print",IMAGE_PREVIEW_DOWNLOAD:iconPrefix+"download",ALERT_CLOSE:iconPrefix+"close",ALERT_INFO:iconPrefix+"info-circle-fill",ALERT_SUCCESS:iconPrefix+"success-circle-fill",ALERT_WARNING:iconPrefix+"warning-circle-fill",ALERT_ERROR:iconPrefix+"error-circle-fill",TREE_NODE_OPEN:iconPrefix+"caret-right rotate90",TREE_NODE_CLOSE:iconPrefix+"caret-right",TREE_NODE_LOADED:iconPrefix+"spinner roll",TREE_DRAG:iconPrefix+"drag-handle",TREE_DRAG_STATUS_NODE:iconPrefix+"sort",TREE_DRAG_STATUS_SUB_NODE:iconPrefix+"add-sub",TREE_DRAG_DISABLED:iconPrefix+"no-drop",TREE_SELECT_LOADED:iconPrefix+"spinner roll",TREE_SELECT_OPEN:iconPrefix+"caret-down rotate180",TREE_SELECT_CLOSE:iconPrefix+"caret-down",TABLE_SELECT_LOADED:iconPrefix+"spinner roll",TABLE_SELECT_OPEN:iconPrefix+"caret-down rotate180",TABLE_SELECT_CLOSE:iconPrefix+"caret-down",TABS_TAB_BUTTON_TOP:iconPrefix+"arrow-up",TABS_TAB_BUTTON_BOTTOM:iconPrefix+"arrow-down",TABS_TAB_BUTTON_LEFT:iconPrefix+"arrow-left",TABS_TAB_BUTTON_RIGHT:iconPrefix+"arrow-right",TABS_TAB_CLOSE:iconPrefix+"close",TABS_TAB_REFRESH:iconPrefix+"refresh",TABS_TAB_REFRESH_LOADING:iconPrefix+"refresh roll",TEXT_COPY:iconPrefix+"copy",TEXT_LOADING:iconPrefix+"spinner roll",TAG_CLOSE:iconPrefix+"close",TAG_LOADING:iconPrefix+"spinner roll",CAROUSEL_HORIZONTAL_PREVIOUS:iconPrefix+"arrow-left",CAROUSEL_HORIZONTAL_NEXT:iconPrefix+"arrow-right",CAROUSEL_VERTICAL_PREVIOUS:iconPrefix+"arrow-up",CAROUSEL_VERTICAL_NEXT:iconPrefix+"arrow-down",COLLAPSE_OPEN:iconPrefix+"arrow-right rotate90",COLLAPSE_CLOSE:iconPrefix+"arrow-right",EMPTY_DEFAULT:iconPrefix+"empty",RESULT_INFO:iconPrefix+"info-circle-fill",RESULT_SUCCESS:iconPrefix+"success-circle-fill",RESULT_WARNING:iconPrefix+"warning-circle-fill",RESULT_ERROR:iconPrefix+"error-circle-fill",RESULT_QUESTION:iconPrefix+"question-circle-fill",RESULT_LOADING:iconPrefix+"spinner roll",RATE_CHECKED:iconPrefix+"star-fill",RATE_UNCHECKED:iconPrefix+"star",COLOR_PICKER_COLOR_COPY:iconPrefix+"copy",COLOR_PICKER_EYE_DROPPER:iconPrefix+"dropper",COLOR_PICKER_TPTY_OPEN:iconPrefix+"arrow-down rotate180",COLOR_PICKER_TPTY_CLOSE:iconPrefix+"arrow-down",SPLIT_TOP_ACTION:iconPrefix+"arrow-up",SPLIT_BOTTOM_ACTION:iconPrefix+"arrow-down",SPLIT_LEFT_ACTION:iconPrefix+"arrow-left",SPLIT_RIGHT_ACTION:iconPrefix+"arrow-right",BACKTOP_TOP:iconPrefix+"top",CONTEXT_MENU_OPTION_LOADING:iconPrefix+"spinner roll",CONTEXT_MENU_CHILDREN:iconPrefix+"arrow-right"});var _default=exports.default=_core.VxeUI;
1
+ Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={version:!0,config:!0,setup:!0},_core=(exports.config=config,exports.default=void 0,exports.setup=setup,exports.version=void 0,require("@vxe-ui/core")),_dynamics=(Object.keys(_core).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_core[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _core[e]}})}),require("../dynamics")),_log=require("./src/log");let version=exports.version="4.14.30";function config(e){return(0,_log.warnLog)("vxe.error.delFunc",["config","setConfig"]),(0,_core.setConfig)(e)}function setup(e){return(0,_log.warnLog)("vxe.error.delFunc",["setup","setConfig"]),(0,_core.setConfig)(e)}_core.VxeUI.uiVersion=version,_core.VxeUI.dynamicApp=_dynamics.dynamicApp,_core.VxeUI.config=config,_core.VxeUI.setup=setup,(0,_core.setConfig)({alert:{},anchor:{},anchorLink:{},avatar:{},backtop:{showIcon:!0,showContent:!0,showTop:!0,showBottom:!0,shadow:!0,threshold:20},badge:{},breadcrumb:{separator:"/"},breadcrumbItem:{},button:{trigger:"hover",prefixTooltip:{enterable:!0},suffixTooltip:{enterable:!0},showDropdownIcon:!0},buttonGroup:{},calendar:{minDate:new Date(1900,0,1),maxDate:new Date(2100,0,1),startDay:1,selectDay:1},card:{border:!0,padding:!0},carousel:{height:200,loop:!0,interval:5e3},carouselItem:{},cascader:{autoClose:!0},checkbox:{},checkboxButton:{},checkboxGroup:{},col:{},collapse:{padding:!0,expandConfig:{showIcon:!0}},collapsePane:{},contextMenu:{autoLocate:!0},countdown:{},colorPicker:{type:"rgb",clearable:!0,showAlpha:!0,clickToCopy:!0,showColorExtractor:!0,showQuick:!0},datePanel:{startDate:new Date(1900,0,1),endDate:new Date(2100,0,1),startDay:1,selectDay:1},datePicker:{shortcutConfig:{align:"left",mode:"text",autoClose:!0},startDay:1,selectDay:1,autoClose:!0,showClearButton:null,showConfirmButton:null},dateRangePicker:{shortcutConfig:{align:"left",mode:"text",autoClose:!0},startDay:1,selectDay:1,separator:" ~ ",autoClose:!0,showClearButton:null,showConfirmButton:null},drawer:{position:"right",showHeader:!0,lockView:!0,mask:!0,showTitleOverflow:!0,showClose:!0,padding:!0,cancelClosable:!0,confirmClosable:!0},empty:{},form:{validConfig:{showErrorMessage:!0,autoPos:!0,theme:"beautify"},tooltipConfig:{enterable:!0},titleAsterisk:!0,titleOverflow:!1,padding:!0},formDesign:{height:400,showHeader:!0,showPc:!0},formGather:{},formGroup:{},formItem:{},formView:{},icon:{},iconPicker:{icons:["home","company","comment","setting","send","envelope","envelope-open","bell","search","print","pc","goods","chart-line","edit","delete","save","folder","microphone","flag","link","location","sunny","rmb","usd","user","add-user","add-users","star","unlock","time","text","feedback","calendar","association-form","cloud-download","cloud-upload","file","subtable","chart-bar-x","chart-bar-y","chart-line","chart-pie","chart-radar"]},image:{draggable:null,showPreview:!0,showPrintButton:!0},imageGroup:{showPreview:!0,showPrintButton:!0},imagePreview:{showPrintButton:!0,maskClosable:!0},input:{startDate:new Date(1900,0,1),endDate:new Date(2100,0,1),startDay:1,selectDay:1,digits:2,controls:!0},layoutAside:{},layoutBody:{backtopConfig:{}},layoutContainer:{},layoutFooter:{},layoutHeader:{},link:{underline:!0},listDesign:{height:400,showPc:!0},listView:{},list:{virtualYConfig:{enabled:!0,gt:100}},loading:{showIcon:!0,showText:!0},menu:{},modal:{top:16,showHeader:!0,minWidth:340,minHeight:140,lockView:!0,mask:!0,duration:3e3,marginSize:0,dblclickZoom:!0,showTitleOverflow:!0,animat:!0,showClose:!0,padding:!0,draggable:!0,showConfirmButton:null,cancelClosable:!0,confirmClosable:!0,zoomConfig:{minimizeMaxSize:10,minimizeVerticalOffset:{top:-24,left:0},minimizeHorizontalOffset:{top:0,left:32}},storageKey:"VXE_MODAL_POSITION"},noticeBar:{},numberInput:{digits:2,autoFill:!0,controlConfig:{enabled:!0,layout:"right",showButton:!0,isWheel:!0,isArrow:!0}},optgroup:{},option:{},pager:{pageSizePlacement:"top"},print:{pageStyle:{}},passwordInput:{controls:!0},printPageBreak:{},pulldown:{},radio:{strict:!0},radioButton:{strict:!0},radioGroup:{strict:!0},rate:{},result:{},row:{},segmented:{},select:{multiCharOverflow:8,radioConfig:{showIcon:!0,trigger:"option"},checkboxConfig:{showIcon:!0,trigger:"option"},remoteConfig:{enabled:!0,autoLoad:!0},virtualYConfig:{enabled:!0,gt:50,oSize:2}},splitter:{resize:!0,itemConfig:{minWidth:40,minHeight:40},resizeConfig:{showTip:!0}},splitterPanel:{},slider:{max:100,min:0},steps:{},switch:{},tabPane:{},tableSelect:{gridConfig:{showOverflow:!0,showHeaderOverflow:!0,showFooterOverflow:!0,rowConfig:{isHover:!0},virtualXConfig:{enabled:!0,gt:0},virtualYConfig:{enabled:!0,gt:0}}},tabs:{},tag:{},textEllipsis:{underline:!0},text:{copyConfig:{showMessage:!0}},textarea:{resize:"none"},timeline:{},timelineItem:{},tip:{},tooltip:{trigger:"hover",theme:"dark",enterDelay:500,leaveDelay:300,isArrow:!0},tree:{indent:20,minHeight:60,radioConfig:{strict:!0},dragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},virtualYConfig:{enabled:!0,gt:50,oSize:2}},treeSelect:{autoClose:null,virtualYConfig:{enabled:!0,gt:0,oSize:2},treeConfig:{maxHeight:300,radioConfig:{},checkboxConfig:{},filterConfig:{autoExpandAll:!0}}},upload:{mode:"all",imageTypes:["jpg","jpeg","png","gif"],showList:!0,showUploadButton:!0,showButtonText:!0,showRemoveButton:!0,showButtonIcon:!0,showPreview:!0,dragToUpload:!0,showLimitSize:!0,showLimitCount:!0,autoSubmit:!0,maxSimultaneousUploads:5,previewImageConfig:{}},watermark:{rotate:-30,gap:[100,100]},table:{},colgroup:{},column:{},toolbar:{},grid:{},gantt:{}});let iconPrefix="vxe-icon-";(0,_core.setIcon)({LOADING:iconPrefix+"spinner roll vxe-loading--default-icon",BUTTON_DROPDOWN:iconPrefix+"arrow-down",BUTTON_LOADING:iconPrefix+"spinner roll",BUTTON_TOOLTIP_ICON:iconPrefix+"question-circle-fill",MENU_ITEM_EXPAND_OPEN:iconPrefix+"arrow-down rotate180",MENU_ITEM_EXPAND_CLOSE:iconPrefix+"arrow-down",SELECT_LOADED:iconPrefix+"spinner roll",SELECT_OPEN:iconPrefix+"caret-down rotate180",SELECT_CLOSE:iconPrefix+"caret-down",SELECT_ADD_OPTION:iconPrefix+"add",ICON_PICKER_OPEN:iconPrefix+"caret-down rotate180",ICON_PICKER_CLOSE:iconPrefix+"caret-down",PAGER_HOME:iconPrefix+"home-page",PAGER_END:iconPrefix+"end-page",PAGER_JUMP_PREV:iconPrefix+"arrow-double-left",PAGER_JUMP_NEXT:iconPrefix+"arrow-double-right",PAGER_PREV_PAGE:iconPrefix+"arrow-left",PAGER_NEXT_PAGE:iconPrefix+"arrow-right",PAGER_JUMP_MORE:iconPrefix+"ellipsis-h",RADIO_CHECKED:iconPrefix+"radio-checked-fill",RADIO_UNCHECKED:iconPrefix+"radio-unchecked",RADIO_DISABLED_UNCHECKED:iconPrefix+"radio-unchecked-fill",CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",CHECKBOX_DISABLED_UNCHECKED:iconPrefix+"checkbox-unchecked-fill",INPUT_CLEAR:iconPrefix+"error-circle-fill",INPUT_SEARCH:iconPrefix+"search",INPUT_PLUS_NUM:iconPrefix+"caret-up",INPUT_MINUS_NUM:iconPrefix+"caret-down",NUMBER_INPUT_MINUS_NUM:iconPrefix+"minus",NUMBER_INPUT_PLUS_NUM:iconPrefix+"add",DATE_PICKER_DATE:iconPrefix+"calendar",PASSWORD_INPUT_SHOW_PWD:iconPrefix+"eye-fill-close",PASSWORD_INPUT_HIDE_PWD:iconPrefix+"eye-fill",MODAL_ZOOM_MIN:iconPrefix+"minus",MODAL_ZOOM_REVERT:iconPrefix+"recover",MODAL_ZOOM_IN:iconPrefix+"square",MODAL_ZOOM_OUT:iconPrefix+"maximize",MODAL_CLOSE:iconPrefix+"close",MODAL_INFO:iconPrefix+"info-circle-fill",MODAL_SUCCESS:iconPrefix+"success-circle-fill",MODAL_WARNING:iconPrefix+"warning-circle-fill",MODAL_ERROR:iconPrefix+"error-circle-fill",MODAL_QUESTION:iconPrefix+"question-circle-fill",MODAL_LOADING:iconPrefix+"spinner roll",DRAWER_CLOSE:iconPrefix+"close",FORM_PREFIX:iconPrefix+"question-circle-fill",FORM_SUFFIX:iconPrefix+"question-circle-fill",FORM_FOLDING:iconPrefix+"arrow-up rotate180",FORM_UNFOLDING:iconPrefix+"arrow-up",FORM_VALID_ERROR_ICON:iconPrefix+"warning-circle-fill",FORM_DESIGN_STYLE_SETTING:iconPrefix+"layout",FORM_DESIGN_PROPS_PC:iconPrefix+"pc",FORM_DESIGN_PROPS_MOBILE:iconPrefix+"mobile",FORM_DESIGN_PROPS_ADD:iconPrefix+"add",FORM_DESIGN_PROPS_EDIT:iconPrefix+"edit",FORM_DESIGN_WIDGET_ADD:iconPrefix+"square-plus-fill",FORM_DESIGN_WIDGET_COPY:iconPrefix+"copy",FORM_DESIGN_WIDGET_DELETE:iconPrefix+"delete",FORM_DESIGN_WIDGET_SWAP_LR:iconPrefix+"swap",FORM_DESIGN_WIDGET_OPTION_DELETE:iconPrefix+"delete",FORM_DESIGN_WIDGET_OPTION_EXPAND_OPEN:iconPrefix+"square-plus",FORM_DESIGN_WIDGET_OPTION_EXPAND_CLOSE:iconPrefix+"square-minus",LIST_DESIGN_FIELD_SETTING:iconPrefix+"custom-column",LIST_DESIGN_LIST_SETTING:iconPrefix+"menu",LIST_DESIGN_LIST_SETTING_SEARCH_DELETE:iconPrefix+"delete",LIST_DESIGN_LIST_SETTING_ACTIVE_DELETE:iconPrefix+"delete",UPLOAD_FILE_ERROR:iconPrefix+"warning-circle-fill",UPLOAD_FILE_ADD:iconPrefix+"upload",UPLOAD_FILE_REMOVE:iconPrefix+"delete",UPLOAD_FILE_DOWNLOAD:iconPrefix+"download",UPLOAD_IMAGE_UPLOAD:iconPrefix+"upload",UPLOAD_IMAGE_RE_UPLOAD:iconPrefix+"repeat",UPLOAD_IMAGE_ADD:iconPrefix+"add",UPLOAD_IMAGE_REMOVE:iconPrefix+"close",UPLOAD_LOADING:iconPrefix+"spinner roll vxe-loading--default-icon",UPLOAD_FILE_TYPE_DEFAULT:iconPrefix+"file",UPLOAD_FILE_TYPE_XLSX:iconPrefix+"file-excel",UPLOAD_FILE_TYPE_XLS:iconPrefix+"file-excel",UPLOAD_FILE_TYPE_PDF:iconPrefix+"file-pdf",UPLOAD_FILE_TYPE_PNG:iconPrefix+"file-image",UPLOAD_FILE_TYPE_GIF:iconPrefix+"file-image",UPLOAD_FILE_TYPE_JPG:iconPrefix+"file-image",UPLOAD_FILE_TYPE_JPEG:iconPrefix+"file-image",UPLOAD_FILE_TYPE_MD:iconPrefix+"file-markdown",UPLOAD_FILE_TYPE_PPD:iconPrefix+"file-ppt",UPLOAD_FILE_TYPE_DOCX:iconPrefix+"file-word",UPLOAD_FILE_TYPE_DOC:iconPrefix+"file-word",UPLOAD_FILE_TYPE_ZIP:iconPrefix+"file-zip",UPLOAD_FILE_TYPE_TXT:iconPrefix+"file-txt",IMAGE_PREVIEW_CLOSE:iconPrefix+"close",IMAGE_PREVIEW_PREVIOUS:iconPrefix+"arrow-left",IMAGE_PREVIEW_NEXT:iconPrefix+"arrow-right",IMAGE_PREVIEW_PCT_FULL:iconPrefix+"pct-full",IMAGE_PREVIEW_PCT_1_1:iconPrefix+"pct-1-1",IMAGE_PREVIEW_ZOOM_OUT:iconPrefix+"search-zoom-out",IMAGE_PREVIEW_ZOOM_IN:iconPrefix+"search-zoom-in",IMAGE_PREVIEW_ROTATE_LEFT:iconPrefix+"rotate-left",IMAGE_PREVIEW_ROTATE_RIGHT:iconPrefix+"rotate-right",IMAGE_PREVIEW_PRINT:iconPrefix+"print",IMAGE_PREVIEW_DOWNLOAD:iconPrefix+"download",ALERT_CLOSE:iconPrefix+"close",ALERT_INFO:iconPrefix+"info-circle-fill",ALERT_SUCCESS:iconPrefix+"success-circle-fill",ALERT_WARNING:iconPrefix+"warning-circle-fill",ALERT_ERROR:iconPrefix+"error-circle-fill",TREE_NODE_OPEN:iconPrefix+"caret-right rotate90",TREE_NODE_CLOSE:iconPrefix+"caret-right",TREE_NODE_LOADED:iconPrefix+"spinner roll",TREE_DRAG:iconPrefix+"drag-handle",TREE_DRAG_STATUS_NODE:iconPrefix+"sort",TREE_DRAG_STATUS_SUB_NODE:iconPrefix+"add-sub",TREE_DRAG_DISABLED:iconPrefix+"no-drop",TREE_SELECT_LOADED:iconPrefix+"spinner roll",TREE_SELECT_OPEN:iconPrefix+"caret-down rotate180",TREE_SELECT_CLOSE:iconPrefix+"caret-down",TABLE_SELECT_LOADED:iconPrefix+"spinner roll",TABLE_SELECT_OPEN:iconPrefix+"caret-down rotate180",TABLE_SELECT_CLOSE:iconPrefix+"caret-down",TABS_TAB_BUTTON_TOP:iconPrefix+"arrow-up",TABS_TAB_BUTTON_BOTTOM:iconPrefix+"arrow-down",TABS_TAB_BUTTON_LEFT:iconPrefix+"arrow-left",TABS_TAB_BUTTON_RIGHT:iconPrefix+"arrow-right",TABS_TAB_CLOSE:iconPrefix+"close",TABS_TAB_REFRESH:iconPrefix+"refresh",TABS_TAB_REFRESH_LOADING:iconPrefix+"refresh roll",TEXT_COPY:iconPrefix+"copy",TEXT_LOADING:iconPrefix+"spinner roll",TAG_CLOSE:iconPrefix+"close",TAG_LOADING:iconPrefix+"spinner roll",CAROUSEL_HORIZONTAL_PREVIOUS:iconPrefix+"arrow-left",CAROUSEL_HORIZONTAL_NEXT:iconPrefix+"arrow-right",CAROUSEL_VERTICAL_PREVIOUS:iconPrefix+"arrow-up",CAROUSEL_VERTICAL_NEXT:iconPrefix+"arrow-down",COLLAPSE_OPEN:iconPrefix+"arrow-right rotate90",COLLAPSE_CLOSE:iconPrefix+"arrow-right",EMPTY_DEFAULT:iconPrefix+"empty",RESULT_INFO:iconPrefix+"info-circle-fill",RESULT_SUCCESS:iconPrefix+"success-circle-fill",RESULT_WARNING:iconPrefix+"warning-circle-fill",RESULT_ERROR:iconPrefix+"error-circle-fill",RESULT_QUESTION:iconPrefix+"question-circle-fill",RESULT_LOADING:iconPrefix+"spinner roll",RATE_CHECKED:iconPrefix+"star-fill",RATE_UNCHECKED:iconPrefix+"star",COLOR_PICKER_COLOR_COPY:iconPrefix+"copy",COLOR_PICKER_EYE_DROPPER:iconPrefix+"dropper",COLOR_PICKER_TPTY_OPEN:iconPrefix+"arrow-down rotate180",COLOR_PICKER_TPTY_CLOSE:iconPrefix+"arrow-down",SPLIT_TOP_ACTION:iconPrefix+"arrow-up",SPLIT_BOTTOM_ACTION:iconPrefix+"arrow-down",SPLIT_LEFT_ACTION:iconPrefix+"arrow-left",SPLIT_RIGHT_ACTION:iconPrefix+"arrow-right",BACKTOP_TOP:iconPrefix+"top",CONTEXT_MENU_OPTION_LOADING:iconPrefix+"spinner roll",CONTEXT_MENU_CHILDREN:iconPrefix+"arrow-right"});var _default=exports.default=_core.VxeUI;
package/lib/ui/src/log.js CHANGED
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.warnLog = exports.errLog = void 0;
7
7
  var _core = require("@vxe-ui/core");
8
- const version = `ui v${"4.14.28"}`;
8
+ const version = `ui v${"4.14.30"}`;
9
9
  const warnLog = exports.warnLog = _core.log.create('warn', version);
10
10
  const errLog = exports.errLog = _core.log.create('error', version);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let version="ui v4.14.28",warnLog=exports.warnLog=_core.log.create("warn",version),errLog=exports.errLog=_core.log.create("error",version);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let version="ui v4.14.30",warnLog=exports.warnLog=_core.log.create("warn",version),errLog=exports.errLog=_core.log.create("error",version);
@@ -59,18 +59,6 @@ function calcContentWH(contList) {
59
59
  contentHeight
60
60
  };
61
61
  }
62
- function calcCanvasWH(contentWidth, opts) {
63
- const {
64
- gap
65
- } = opts;
66
- const [gapX = 0, gapY = 0] = gap ? _xeUtils.default.isArray(gap) ? gap : [gap, gap] : [];
67
- const canvasWidth = contentWidth + _xeUtils.default.toNumber(gapX);
68
- const canvasHeight = contentWidth + _xeUtils.default.toNumber(gapY);
69
- return {
70
- canvasWidth,
71
- canvasHeight
72
- };
73
- }
74
62
  function getFontConf(item, key, opts) {
75
63
  return (item.font ? item.font[key] : '') || (opts.font ? opts.font[key] : '');
76
64
  }
@@ -126,29 +114,41 @@ function getContentUrl(content, defaultFontSize, options) {
126
114
  const ctx = canvasEl.getContext('2d');
127
115
  if (ctx && contList.length) {
128
116
  const {
129
- contentWidth,
130
- contentHeight
131
- } = calcContentWH(contList);
117
+ gap
118
+ } = opts;
119
+ const gapList = gap ? _xeUtils.default.isArray(gap) ? gap : [gap, gap] : [];
120
+ const gapX = _xeUtils.default.toNumber(gapList[0]);
121
+ const gapY = _xeUtils.default.toNumber(gapList[1]);
132
122
  const {
133
- canvasWidth,
134
- canvasHeight
135
- } = calcCanvasWH(contentWidth, opts);
123
+ contentWidth
124
+ } = calcContentWH(contList);
125
+ const canvasWidth = contentWidth * 2 + gapX * 2 + gapX / 2;
126
+ const canvasHeight = contentWidth * 2 + gapY;
136
127
  canvasEl.width = canvasWidth;
137
128
  canvasEl.height = canvasHeight;
138
- const x = (canvasWidth - contentWidth) / 2;
139
- const y = (canvasHeight - contentHeight) / 2;
140
- const drayX = x + contentWidth / 2;
141
- const drayY = y + contentHeight / 2;
129
+ const drayX = gapX / 2;
130
+ const drayY = contentWidth + gapY / 2;
142
131
  ctx.save();
143
132
  ctx.translate(drayX, drayY);
144
133
  ctx.rotate(deg * Math.PI / 180);
145
134
  ctx.translate(-drayX, -drayY);
146
- let offsetHeight = 0;
135
+ let txtOffsetY = 0;
136
+ contList.forEach(item => {
137
+ drayFont(ctx, item, opts);
138
+ const txtX = drayX;
139
+ const txtY = drayY + txtOffsetY;
140
+ ctx.fillText(item.text, txtX, txtY, contentWidth);
141
+ txtOffsetY += item.height;
142
+ });
143
+ const offsetX = gapX;
144
+ const offsetY = gapY + contentWidth;
145
+ txtOffsetY = 0;
147
146
  contList.forEach(item => {
148
- const align = getFontConf(item, 'align', opts);
149
147
  drayFont(ctx, item, opts);
150
- ctx.fillText(item.text, x + (align === 'center' ? (contentWidth - item.width) / 2 : 0), y + (contentHeight + contentHeight) / 2 + offsetHeight, contentWidth);
151
- offsetHeight += item.height;
148
+ const txtX = drayX + offsetX;
149
+ const txtY = drayY + txtOffsetY + offsetY;
150
+ ctx.fillText(item.text, txtX, txtY, contentWidth);
151
+ txtOffsetY += item.height;
152
152
  });
153
153
  ctx.restore();
154
154
  resolve(canvasEl.toDataURL());
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.getContentUrl=getContentUrl;var _xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../../ui/src/dom");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}let canvasEl=null,fontEl=null,fontCacheMaps={};function getMarkCanvas(){return canvasEl||((canvasEl=document.createElement("canvas")).style.position="absolute",canvasEl.style.top="0",canvasEl.style.left="0"),canvasEl}function removeMarkElement(t){var e;t&&(e=t.parentNode)&&e.removeChild(t)}function calcFontWH(t,e){var n=e+"_"+t;return fontCacheMaps[n]||((fontEl=fontEl||document.createElement("span")).parentNode||document.body.append(fontEl),fontEl.textContent=t,fontEl.style.fontSize=(0,_dom.toCssUnit)(e),t=fontEl.offsetWidth,e=fontEl.offsetHeight,fontCacheMaps[n]={width:t,height:e}),fontCacheMaps[n]}function calcContentWH(t){let e=0,n=0;return t.forEach(t=>{e=Math.max(t.width,e),n=Math.max(t.height,n)}),{contentWidth:e,contentHeight:n}}function calcCanvasWH(t,e){var e=e.gap,[e=0,n=0]=e?_xeUtils.default.isArray(e)?e:[e,e]:[];return{canvasWidth:t+_xeUtils.default.toNumber(e),canvasHeight:t+_xeUtils.default.toNumber(n)}}function getFontConf(t,e,n){return(t.font?t.font[e]:"")||(n.font?n.font[e]:"")}function createMarkFont(t,e,n){var o=n.offset,a=_xeUtils.default.toValueString(t.textContent),n=_xeUtils.default.toNumber(getFontConf(t,"fontSize",n)||e)||14,[e=0,o=0]=o?_xeUtils.default.isArray(o)?o:[o,o]:[],{width:l,height:r}=calcFontWH(a,n);return{text:a,fontSize:n,font:t.font,width:l+_xeUtils.default.toNumber(e),height:r+_xeUtils.default.toNumber(o)}}function drayFont(t,e,n){var o=getFontConf(e,"fontWeight",n);t.fillStyle=""+(getFontConf(e,"color",n)||"rgba(0, 0, 0, 0.15)"),t.font=[getFontConf(e,"fontStyle",n)||"normal","bold"===o||"bolder"===o?"bold":"",(0,_dom.toCssUnit)(e.fontSize),getFontConf(e,"fontFamily",n)||"sans-serif"].join(" ")}function getContentUrl(t,e,n){let c=Object.assign({},n);n=c.rotate;let u=_xeUtils.default.toNumber(n),d=(_xeUtils.default.isArray(t)?t:[t]).map(t=>t?t.textContent?createMarkFont(t,e,c):createMarkFont({textContent:""+t},e,c):createMarkFont({textContent:""},e,c));return removeMarkElement(fontEl),new Promise(t=>{var e=getMarkCanvas();e.parentNode||document.body.append(e);let i=e.getContext("2d");if(i&&d.length){let{contentWidth:n,contentHeight:o}=calcContentWH(d);var{canvasWidth:f,canvasHeight:s}=calcCanvasWH(n,c);e.width=f,e.height=s;let a=(f-n)/2,l=(s-o)/2;f=a+n/2,s=l+o/2;i.save(),i.translate(f,s),i.rotate(u*Math.PI/180),i.translate(-f,-s);let r=0;d.forEach(t=>{var e=getFontConf(t,"align",c);drayFont(i,t,c),i.fillText(t.text,a+("center"===e?(n-t.width)/2:0),l+(o+o)/2+r,n),r+=t.height}),i.restore(),t(e.toDataURL())}else t("");removeMarkElement(e)})}
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.getContentUrl=getContentUrl;var _xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../../ui/src/dom");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}let canvasEl=null,fontEl=null,fontCacheMaps={};function getMarkCanvas(){return canvasEl||((canvasEl=document.createElement("canvas")).style.position="absolute",canvasEl.style.top="0",canvasEl.style.left="0"),canvasEl}function removeMarkElement(t){var e;t&&(e=t.parentNode)&&e.removeChild(t)}function calcFontWH(t,e){var n=e+"_"+t;return fontCacheMaps[n]||((fontEl=fontEl||document.createElement("span")).parentNode||document.body.append(fontEl),fontEl.textContent=t,fontEl.style.fontSize=(0,_dom.toCssUnit)(e),t=fontEl.offsetWidth,e=fontEl.offsetHeight,fontCacheMaps[n]={width:t,height:e}),fontCacheMaps[n]}function calcContentWH(t){let e=0,n=0;return t.forEach(t=>{e=Math.max(t.width,e),n=Math.max(t.height,n)}),{contentWidth:e,contentHeight:n}}function getFontConf(t,e,n){return(t.font?t.font[e]:"")||(n.font?n.font[e]:"")}function createMarkFont(t,e,n){var o=n.offset,a=_xeUtils.default.toValueString(t.textContent),n=_xeUtils.default.toNumber(getFontConf(t,"fontSize",n)||e)||14,[e=0,o=0]=o?_xeUtils.default.isArray(o)?o:[o,o]:[],{width:r,height:l}=calcFontWH(a,n);return{text:a,fontSize:n,font:t.font,width:r+_xeUtils.default.toNumber(e),height:l+_xeUtils.default.toNumber(o)}}function drayFont(t,e,n){var o=getFontConf(e,"fontWeight",n);t.fillStyle=""+(getFontConf(e,"color",n)||"rgba(0, 0, 0, 0.15)"),t.font=[getFontConf(e,"fontStyle",n)||"normal","bold"===o||"bolder"===o?"bold":"",(0,_dom.toCssUnit)(e.fontSize),getFontConf(e,"fontFamily",n)||"sans-serif"].join(" ")}function getContentUrl(t,e,n){let h=Object.assign({},n);n=h.rotate;let m=_xeUtils.default.toNumber(n),g=(_xeUtils.default.isArray(t)?t:[t]).map(t=>t?t.textContent?createMarkFont(t,e,h):createMarkFont({textContent:""+t},e,h):createMarkFont({textContent:""},e,h));return removeMarkElement(fontEl),new Promise(t=>{var e=getMarkCanvas();e.parentNode||document.body.append(e);let s=e.getContext("2d");if(s&&g.length){var n=h.gap,n=n?_xeUtils.default.isArray(n)?n:[n,n]:[],u=_xeUtils.default.toNumber(n[0]),n=_xeUtils.default.toNumber(n[1]);let o=calcContentWH(g).contentWidth;var c=2*o+2*u+u/2,d=2*o+n;e.width=c,e.height=d;let a=u/2,r=o+n/2,l=(s.save(),s.translate(a,r),s.rotate(m*Math.PI/180),s.translate(-a,-r),0),f=(g.forEach(t=>{drayFont(s,t,h);var e=a,n=r+l;s.fillText(t.text,e,n,o),l+=t.height}),u),i=n+o;l=0,g.forEach(t=>{drayFont(s,t,h);var e=a+f,n=r+l+i;s.fillText(t.text,e,n,o),l+=t.height}),s.restore(),t(e.toDataURL())}else t("");removeMarkElement(e)})}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-pc-ui",
3
- "version": "4.14.28",
3
+ "version": "4.14.30",
4
4
  "description": "A vue based PC component library",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -276,7 +276,7 @@ export default defineVxeComponent({
276
276
  if (isDatePanelType) {
277
277
  const { datePanelType, selectMonth } = reactData
278
278
  const yearList = computeYearList.value
279
- let year = ''
279
+ let year: string | number = ''
280
280
  let month
281
281
  if (selectMonth) {
282
282
  year = selectMonth.getFullYear()
@@ -871,20 +871,20 @@ export default defineVxeComponent({
871
871
  if (!isDisabledPrevDateBtn) {
872
872
  let viewDate
873
873
  if (type === 'year') {
874
- viewDate = XEUtils.getWhatYear(selectMonth, -yearSize, 'first')
874
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, -yearSize, 'first')
875
875
  } else if (type === 'month' || type === 'quarter') {
876
876
  if (datePanelType === 'year') {
877
- viewDate = XEUtils.getWhatYear(selectMonth, -yearSize, 'first')
877
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, -yearSize, 'first')
878
878
  } else {
879
- viewDate = XEUtils.getWhatYear(selectMonth, -1, 'first')
879
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, -1, 'first')
880
880
  }
881
881
  } else {
882
882
  if (datePanelType === 'year') {
883
- viewDate = XEUtils.getWhatYear(selectMonth, -yearSize, 'first')
883
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, -yearSize, 'first')
884
884
  } else if (datePanelType === 'month') {
885
- viewDate = XEUtils.getWhatYear(selectMonth, -1, 'first')
885
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, -1, 'first')
886
886
  } else {
887
- viewDate = XEUtils.getWhatMonth(selectMonth, -1, 'first')
887
+ viewDate = XEUtils.getWhatMonth(selectMonth as Date, -1, 'first')
888
888
  }
889
889
  }
890
890
  reactData.selectMonth = viewDate
@@ -894,11 +894,11 @@ export default defineVxeComponent({
894
894
 
895
895
  const dateTodayMonthEvent = (evnt: Event) => {
896
896
  dateNowHandle()
897
- dateChange(reactData.currentDate, true)
897
+ dateChange(reactData.currentDate as Date, true)
898
898
  if (!props.multiple) {
899
899
  hidePanel()
900
900
  }
901
- dispatchEvent('date-today', { type: props.type }, evnt)
901
+ dispatchEvent('date-today', { viewType: reactData.datePanelType, type: props.type, viewDate: reactData.selectMonth }, evnt)
902
902
  }
903
903
 
904
904
  const dateNextEvent = (evnt: Event) => {
@@ -910,24 +910,24 @@ export default defineVxeComponent({
910
910
  if (!isDisabledNextDateBtn) {
911
911
  let viewDate
912
912
  if (type === 'year') {
913
- viewDate = XEUtils.getWhatYear(selectMonth, yearSize, 'first')
913
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, yearSize, 'first')
914
914
  } else if (type === 'month' || type === 'quarter') {
915
915
  if (datePanelType === 'year') {
916
- viewDate = XEUtils.getWhatYear(selectMonth, yearSize, 'first')
916
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, yearSize, 'first')
917
917
  } else {
918
- viewDate = XEUtils.getWhatYear(selectMonth, 1, 'first')
918
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, 1, 'first')
919
919
  }
920
920
  } else {
921
921
  if (datePanelType === 'year') {
922
- viewDate = XEUtils.getWhatYear(selectMonth, yearSize, 'first')
922
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, yearSize, 'first')
923
923
  } else if (datePanelType === 'month') {
924
- viewDate = XEUtils.getWhatYear(selectMonth, 1, 'first')
924
+ viewDate = XEUtils.getWhatYear(selectMonth as Date, 1, 'first')
925
925
  } else {
926
- viewDate = XEUtils.getWhatMonth(selectMonth, 1, 'first')
926
+ viewDate = XEUtils.getWhatMonth(selectMonth as Date, 1, 'first')
927
927
  }
928
928
  }
929
929
  reactData.selectMonth = viewDate
930
- dispatchEvent('date-next', { viewType: datePanelType, value, type }, evnt)
930
+ dispatchEvent('date-next', { viewType: datePanelType, value, type, viewDate }, evnt)
931
931
  }
932
932
  }
933
933
 
@@ -1125,7 +1125,7 @@ export default defineVxeComponent({
1125
1125
  handleChange(dateMultipleValue.join(','), { type: 'update' })
1126
1126
  }
1127
1127
  } else {
1128
- dateChange(dateValue || reactData.currentDate)
1128
+ dateChange(dateValue || reactData.currentDate as Date)
1129
1129
  }
1130
1130
  }
1131
1131
  hidePanel()
@@ -1217,7 +1217,8 @@ export default defineVxeComponent({
1217
1217
  }
1218
1218
  },
1219
1219
  getPanelDate () {
1220
- return reactData.selectMonth
1220
+ const { selectMonth } = reactData
1221
+ return selectMonth ? new Date(selectMonth.getTime()) : new Date()
1221
1222
  },
1222
1223
  checkValue (value) {
1223
1224
  afterCheckValue(value)
@@ -11,7 +11,7 @@ import VxeDatePanelComponent from '../../date-panel/src/date-panel'
11
11
  import VxeButtonComponent from '../../button/src/button'
12
12
  import VxeButtonGroupComponent from '../../button/src/button-group'
13
13
 
14
- import type { VxeDateRangePickerConstructor, VxeDateRangePickerEmits, DateRangePickerInternalData, DateRangePickerReactData, DateRangePickerMethods, VxeDateRangePickerPropTypes, DateRangePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDatePanelPropTypes, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDateRangePickerDefines, VxeButtonGroupEvents, VxeDatePanelConstructor } from '../../../types'
14
+ import type { VxeDateRangePickerConstructor, VxeDateRangePickerEmits, DateRangePickerInternalData, DateRangePickerReactData, DateRangePickerMethods, VxeDateRangePickerPropTypes, DateRangePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDatePanelPropTypes, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePanelEvents, VxeDateRangePickerDefines, VxeButtonGroupEvents, VxeDatePanelConstructor } from '../../../types'
15
15
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
16
16
 
17
17
  export default defineVxeComponent({
@@ -33,6 +33,10 @@ export default defineVxeComponent({
33
33
  type: Boolean as PropType<VxeDateRangePickerPropTypes.Clearable>,
34
34
  default: () => getConfig().dateRangePicker.clearable
35
35
  },
36
+ linkedPanels: {
37
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.LinkedPanels>,
38
+ default: () => getConfig().dateRangePicker.linkedPanels
39
+ },
36
40
  readonly: {
37
41
  type: Boolean as PropType<VxeDateRangePickerPropTypes.Readonly>,
38
42
  default: null
@@ -597,6 +601,7 @@ export default defineVxeComponent({
597
601
  }
598
602
  if (!reactData.visiblePanel) {
599
603
  reactData.isActivated = false
604
+ checkValue()
600
605
  }
601
606
  dispatchEvent('blur', { value, startValue, endValue }, evnt)
602
607
  // 自动更新校验状态
@@ -673,6 +678,70 @@ export default defineVxeComponent({
673
678
  })
674
679
  }
675
680
 
681
+ const startPanelDateBtnChangeEvent: VxeDatePanelEvents.DateToday = (params) => {
682
+ const { linkedPanels } = props
683
+ if (linkedPanels) {
684
+ const { viewType } = params
685
+ const $startDatePanel = refStartDatePanel.value
686
+ const $endDatePanel = refEndDatePanel.value
687
+ if (!$startDatePanel || !$endDatePanel) {
688
+ return
689
+ }
690
+ const startPanelDate = $startDatePanel.getPanelDate()
691
+ if (!startPanelDate) {
692
+ return
693
+ }
694
+ const endYear = startPanelDate.getFullYear()
695
+ const endMonth = startPanelDate.getMonth()
696
+ switch (viewType) {
697
+ case 'day':
698
+ case 'date':
699
+ case 'week': {
700
+ if (endMonth < 11) {
701
+ startPanelDate.setMonth(endMonth + 1)
702
+ } else {
703
+ startPanelDate.setFullYear(endYear + 1)
704
+ startPanelDate.setMonth(0)
705
+ }
706
+ $endDatePanel.setPanelDate(startPanelDate)
707
+ break
708
+ }
709
+ }
710
+ }
711
+ }
712
+
713
+ const endPanelDateBtnChangeEvent: VxeDatePanelEvents.DateToday = (params) => {
714
+ const { linkedPanels } = props
715
+ if (linkedPanels) {
716
+ const { viewType } = params
717
+ const $startDatePanel = refStartDatePanel.value
718
+ const $endDatePanel = refEndDatePanel.value
719
+ if (!$startDatePanel || !$endDatePanel) {
720
+ return
721
+ }
722
+ const endPanelDate = $endDatePanel.getPanelDate()
723
+ if (!endPanelDate) {
724
+ return
725
+ }
726
+ const endYear = endPanelDate.getFullYear()
727
+ const endMonth = endPanelDate.getMonth()
728
+ switch (viewType) {
729
+ case 'day':
730
+ case 'date':
731
+ case 'week': {
732
+ if (endMonth) {
733
+ endPanelDate.setMonth(endMonth - 1)
734
+ } else {
735
+ endPanelDate.setFullYear(endYear - 1)
736
+ endPanelDate.setMonth(11)
737
+ }
738
+ $startDatePanel.setPanelDate(endPanelDate)
739
+ break
740
+ }
741
+ }
742
+ }
743
+ }
744
+
676
745
  // 全局事件
677
746
  const handleGlobalMousedownEvent = (evnt: Event) => {
678
747
  const { visiblePanel, isActivated } = reactData
@@ -1046,7 +1115,10 @@ export default defineVxeComponent({
1046
1115
  disabledMethod: props.disabledMethod,
1047
1116
  selectDay: props.selectDay,
1048
1117
  cellClassName: panelCellClassName,
1049
- onChange: startPanelChangeEvent
1118
+ onChange: startPanelChangeEvent,
1119
+ onDatePrev: startPanelDateBtnChangeEvent,
1120
+ onDateToday: startPanelDateBtnChangeEvent,
1121
+ onDateNext: startPanelDateBtnChangeEvent
1050
1122
  }),
1051
1123
  h(VxeDatePanelComponent, {
1052
1124
  ref: refEndDatePanel,
@@ -1067,7 +1139,10 @@ export default defineVxeComponent({
1067
1139
  disabledMethod: props.disabledMethod,
1068
1140
  selectDay: props.selectDay,
1069
1141
  cellClassName: panelCellClassName,
1070
- onChange: endPanelChangeEvent
1142
+ onChange: endPanelChangeEvent,
1143
+ onDatePrev: endPanelDateBtnChangeEvent,
1144
+ onDateToday: endPanelDateBtnChangeEvent,
1145
+ onDateNext: endPanelDateBtnChangeEvent
1071
1146
  })
1072
1147
  ]),
1073
1148
  h('div', {
@@ -71,17 +71,6 @@ function calcContentWH (contList: VxeWatermarkDefines.ContentObj[]) {
71
71
  }
72
72
  }
73
73
 
74
- function calcCanvasWH (contentWidth: number, opts: ContentMarkOptions) {
75
- const { gap } = opts
76
- const [gapX = 0, gapY = 0] = gap ? ((XEUtils.isArray(gap) ? gap : [gap, gap])) : []
77
- const canvasWidth = contentWidth + XEUtils.toNumber(gapX)
78
- const canvasHeight = contentWidth + XEUtils.toNumber(gapY)
79
- return {
80
- canvasWidth,
81
- canvasHeight
82
- }
83
- }
84
-
85
74
  function getFontConf (item: VxeWatermarkDefines.ContentObj | VxeWatermarkDefines.ContentConf, key: keyof VxeWatermarkPropTypes.Font, opts: ContentMarkOptions) {
86
75
  return (item.font ? item.font[key] : '') || (opts.font ? opts.font[key] : '')
87
76
  }
@@ -139,31 +128,46 @@ export function getContentUrl (content: VxeWatermarkPropTypes.Content, defaultFo
139
128
  }
140
129
  const ctx = canvasEl.getContext('2d')
141
130
  if (ctx && contList.length) {
142
- const { contentWidth, contentHeight } = calcContentWH(contList)
143
- const { canvasWidth, canvasHeight } = calcCanvasWH(contentWidth, opts)
131
+ const { gap } = opts
132
+ const gapList = gap ? ((XEUtils.isArray(gap) ? gap : [gap, gap])) : []
133
+ const gapX = XEUtils.toNumber(gapList[0])
134
+ const gapY = XEUtils.toNumber(gapList[1])
135
+
136
+ const { contentWidth } = calcContentWH(contList)
137
+ const canvasWidth = contentWidth * 2 + gapX * 2 + (gapX / 2)
138
+ const canvasHeight = contentWidth * 2 + gapY
144
139
 
145
140
  canvasEl.width = canvasWidth
146
141
  canvasEl.height = canvasHeight
147
142
 
148
- const x = (canvasWidth - contentWidth) / 2
149
- const y = (canvasHeight - contentHeight) / 2
150
-
151
- const drayX = x + (contentWidth / 2)
152
- const drayY = y + (contentHeight / 2)
143
+ const drayX = (gapX / 2)
144
+ const drayY = contentWidth + (gapY / 2)
153
145
 
154
146
  ctx.save()
155
147
  ctx.translate(drayX, drayY)
156
148
  ctx.rotate(deg * Math.PI / 180)
157
149
  ctx.translate(-drayX, -drayY)
158
150
 
159
- let offsetHeight = 0
151
+ let txtOffsetY = 0
160
152
  contList.forEach((item) => {
161
- const align = getFontConf(item, 'align', opts)
162
153
  drayFont(ctx, item, opts)
163
- ctx.fillText(item.text, x + (align === 'center' ? (contentWidth - item.width) / 2 : 0), y + (contentHeight + contentHeight) / 2 + offsetHeight, contentWidth)
164
- offsetHeight += item.height
154
+ const txtX = drayX
155
+ const txtY = drayY + txtOffsetY
156
+ ctx.fillText(item.text, txtX, txtY, contentWidth)
157
+ txtOffsetY += item.height
165
158
  })
166
159
 
160
+ const offsetX = gapX
161
+ const offsetY = gapY + contentWidth
162
+
163
+ txtOffsetY = 0
164
+ contList.forEach((item) => {
165
+ drayFont(ctx, item, opts)
166
+ const txtX = drayX + offsetX
167
+ const txtY = drayY + txtOffsetY + offsetY
168
+ ctx.fillText(item.text, txtX, txtY, contentWidth)
169
+ txtOffsetY += item.height
170
+ })
167
171
  ctx.restore()
168
172
 
169
173
  resolve(canvasEl.toDataURL())
@@ -126,8 +126,8 @@ export interface DatePanelReactData {
126
126
  datePanelValue: Date | null
127
127
  datePanelLabel: string
128
128
  datePanelType: VxeDatePanelDefines.DatePanelType
129
- selectMonth: any
130
- currentDate: any
129
+ selectMonth: Date | null
130
+ currentDate: Date | null
131
131
  }
132
132
 
133
133
  export interface DatePanelInternalData {
@@ -264,6 +264,14 @@ export namespace VxeDatePanelDefines {
264
264
  export interface RevertEventParams extends DatePanelEventParams {
265
265
  label: string
266
266
  }
267
+
268
+ export interface DateTodayEventParams {
269
+ type: string
270
+ viewType: DatePanelType
271
+ viewDate: string
272
+ }
273
+ export interface DatePrevEventParams extends DateTodayEventParams {}
274
+ export interface DateNextEventParams extends DateTodayEventParams {}
267
275
  }
268
276
 
269
277
  export type VxeDatePanelEventProps = {
@@ -271,6 +279,9 @@ export type VxeDatePanelEventProps = {
271
279
  onChange?: VxeDatePanelEvents.Change
272
280
  onConfirm?: VxeDatePanelEvents.Confirm
273
281
  onRevert?: VxeDatePanelEvents.Revert
282
+ onDatePrev?: VxeDatePanelEvents.DatePrev
283
+ onDateToday?: VxeDatePanelEvents.DateToday
284
+ onDateNext?: VxeDatePanelEvents.DateNext
274
285
  }
275
286
 
276
287
  export interface VxeDatePanelListeners {
@@ -278,6 +289,9 @@ export interface VxeDatePanelListeners {
278
289
  change?: VxeDatePanelEvents.Change
279
290
  confirm?: VxeDatePanelEvents.Confirm
280
291
  revert?: VxeDatePanelEvents.Revert
292
+ datePrev?: VxeDatePanelEvents.DatePrev
293
+ dateToday?: VxeDatePanelEvents.DateToday
294
+ dateNext?: VxeDatePanelEvents.DateNext
281
295
  }
282
296
 
283
297
  export namespace VxeDatePanelEvents {
@@ -285,6 +299,9 @@ export namespace VxeDatePanelEvents {
285
299
  export type Change = (params: VxeDatePanelDefines.ChangeEventParams) => void
286
300
  export type Confirm = (params: VxeDatePanelDefines.ConfirmEventParams) => void
287
301
  export type Revert = (params: VxeDatePanelDefines.RevertEventParams) => void
302
+ export type DatePrev = (params: VxeDatePanelDefines.DatePrevEventParams) => void
303
+ export type DateToday = (params: VxeDatePanelDefines.DateTodayEventParams) => void
304
+ export type DateNext = (params: VxeDatePanelDefines.DateNextEventParams) => void
288
305
  }
289
306
 
290
307
  export namespace VxeDatePanelSlotTypes {
@@ -36,6 +36,7 @@ export namespace VxeDateRangePickerPropTypes {
36
36
  export type Name = string
37
37
  export type Type = VxeDatePanelPropTypes.Type
38
38
  export type Clearable = boolean
39
+ export type LinkedPanels = boolean
39
40
  /**
40
41
  * 已废弃,请使用 PopupConfig.zIndex
41
42
  * @deprecated
@@ -125,6 +126,7 @@ export interface VxeDateRangePickerProps {
125
126
  name?: VxeDateRangePickerPropTypes.Name
126
127
  type?: VxeDateRangePickerPropTypes.Type
127
128
  clearable?: VxeDateRangePickerPropTypes.Clearable
129
+ linkedPanels?: VxeDateRangePickerPropTypes.LinkedPanels
128
130
  zIndex?: VxeDateRangePickerPropTypes.ZIndex
129
131
  readonly?: VxeDateRangePickerPropTypes.Readonly
130
132
  disabled?: VxeDateRangePickerPropTypes.Disabled
@@ -697,6 +697,10 @@ export interface GanttMethods<D = any> extends Omit<GridMethods<D>, 'dispatchEve
697
697
  * 如果有滚动条,则滚动到对应的任务视图
698
698
  */
699
699
  scrollToTaskView(rowOrRowid: any): Promise<any>
700
+ /**
701
+ * 如果任务视图有横向滚动条,则滚动到任务视图对应的日期
702
+ */
703
+ scrollToDateView(colDate: string | Date | number): Promise<any>
700
704
  }
701
705
  export interface VxeGanttMethods<D = any> extends GanttMethods<D>, Omit<VxeGridMethods<D>, 'dispatchEvent'> { }
702
706
 
@@ -4136,6 +4136,7 @@ export interface TableInternalData<D = any> {
4136
4136
  sourceDataRowIdData: Record<string, D>
4137
4137
  fullColumnIdData: Record<string, VxeTableDefines.ColumnCacheItem<D>>
4138
4138
  fullColumnFieldData: Record<string, VxeTableDefines.ColumnCacheItem<D>>
4139
+ fullCellHeightMaps: Record<string, Record<string, number>>
4139
4140
 
4140
4141
  // 当前行
4141
4142
  currentRow: D | null