vxe-pc-ui 4.11.43 → 4.11.45

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 (70) hide show
  1. package/es/button/src/button.js +18 -6
  2. package/es/date-picker/src/date-picker.js +17 -5
  3. package/es/date-range-picker/src/date-range-picker.js +17 -5
  4. package/es/icon/style.css +1 -1
  5. package/es/icon-picker/src/icon-picker.js +36 -74
  6. package/es/pulldown/src/pulldown.js +26 -6
  7. package/es/select/src/select.js +55 -16
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/table-select/src/table-select.js +17 -7
  11. package/es/tree-select/src/tree-select.js +21 -7
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/lib/button/src/button.js +18 -9
  15. package/lib/button/src/button.min.js +1 -1
  16. package/lib/date-picker/src/date-picker.js +19 -7
  17. package/lib/date-picker/src/date-picker.min.js +1 -1
  18. package/lib/date-range-picker/src/date-range-picker.js +19 -7
  19. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  20. package/lib/icon/style/style.css +1 -1
  21. package/lib/icon/style/style.min.css +1 -1
  22. package/lib/icon-picker/src/icon-picker.js +39 -80
  23. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  24. package/lib/index.umd.js +220 -157
  25. package/lib/index.umd.min.js +1 -1
  26. package/lib/pulldown/src/pulldown.js +26 -9
  27. package/lib/pulldown/src/pulldown.min.js +1 -1
  28. package/lib/select/src/select.js +57 -21
  29. package/lib/select/src/select.min.js +1 -1
  30. package/lib/style.css +1 -1
  31. package/lib/style.min.css +1 -1
  32. package/lib/table-select/src/table-select.js +18 -12
  33. package/lib/table-select/src/table-select.min.js +1 -1
  34. package/lib/tree-select/src/tree-select.js +22 -10
  35. package/lib/tree-select/src/tree-select.min.js +1 -1
  36. package/lib/ui/index.js +1 -1
  37. package/lib/ui/index.min.js +1 -1
  38. package/lib/ui/src/log.js +1 -1
  39. package/lib/ui/src/log.min.js +1 -1
  40. package/package.json +1 -1
  41. package/packages/button/src/button.ts +19 -6
  42. package/packages/date-picker/src/date-picker.ts +18 -5
  43. package/packages/date-range-picker/src/date-range-picker.ts +18 -5
  44. package/packages/icon-picker/src/icon-picker.ts +37 -71
  45. package/packages/pulldown/src/pulldown.ts +27 -6
  46. package/packages/select/src/select.ts +54 -16
  47. package/packages/table-select/src/table-select.ts +17 -7
  48. package/packages/tree-select/src/tree-select.ts +21 -7
  49. package/types/components/button.d.ts +18 -0
  50. package/types/components/date-picker.d.ts +8 -0
  51. package/types/components/date-range-picker.d.ts +8 -0
  52. package/types/components/icon-picker.d.ts +24 -0
  53. package/types/components/pulldown.d.ts +28 -0
  54. package/types/components/select.d.ts +70 -0
  55. package/types/components/table-select.d.ts +16 -1
  56. package/types/components/table.d.ts +2 -2
  57. package/types/components/tree-select.d.ts +20 -2
  58. package/types/components/upload.d.ts +1 -1
  59. /package/es/icon/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
  60. /package/es/icon/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
  61. /package/es/icon/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
  62. /package/es/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
  63. /package/es/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
  64. /package/es/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
  65. /package/lib/icon/style/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
  66. /package/lib/icon/style/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
  67. /package/lib/icon/style/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
  68. /package/lib/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
  69. /package/lib/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
  70. /package/lib/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
@@ -43,6 +43,10 @@ export default defineVxeComponent({
43
43
  options: Array,
44
44
  optionProps: Object,
45
45
  lazyOptions: Array,
46
+ /**
47
+ * 已废弃,请使用 popupConfig.zIndex
48
+ * @deprecated
49
+ */
46
50
  zIndex: Number,
47
51
  size: {
48
52
  type: String,
@@ -120,8 +124,12 @@ export default defineVxeComponent({
120
124
  });
121
125
  const computeBtnTransfer = computed(() => {
122
126
  const { transfer } = props;
127
+ const popupOpts = computePopupOpts.value;
128
+ if (XEUtils.isBoolean(popupOpts.transfer)) {
129
+ return popupOpts.transfer;
130
+ }
123
131
  if (transfer === null) {
124
- const globalTransfer = getConfig().select.transfer;
132
+ const globalTransfer = getConfig().tableSelect.transfer;
125
133
  if (XEUtils.isBoolean(globalTransfer)) {
126
134
  return globalTransfer;
127
135
  }
@@ -361,9 +369,10 @@ export default defineVxeComponent({
361
369
  updateModel(props.modelValue);
362
370
  };
363
371
  const updateZindex = () => {
364
- const { zIndex } = props;
365
- if (zIndex) {
366
- reactData.panelIndex = zIndex;
372
+ const popupOpts = computePopupOpts.value;
373
+ const customZIndex = popupOpts.zIndex || props.zIndex;
374
+ if (customZIndex) {
375
+ reactData.panelIndex = XEUtils.toNumber(customZIndex);
367
376
  }
368
377
  else if (reactData.panelIndex < getLastZIndex()) {
369
378
  reactData.panelIndex = nextZIndex();
@@ -375,9 +384,10 @@ export default defineVxeComponent({
375
384
  const targetElem = refElem.value;
376
385
  const panelElem = refOptionPanel.value;
377
386
  const btnTransfer = computeBtnTransfer.value;
387
+ const popupOpts = computePopupOpts.value;
378
388
  const handleStyle = () => {
379
389
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
380
- placement,
390
+ placement: popupOpts.placement || placement,
381
391
  teleportTo: btnTransfer
382
392
  });
383
393
  const panelStyle = Object.assign(ppObj.style, {
@@ -559,13 +569,13 @@ export default defineVxeComponent({
559
569
  const btnTransfer = computeBtnTransfer.value;
560
570
  const formReadonly = computeFormReadonly.value;
561
571
  const popupOpts = computePopupOpts.value;
562
- const { className: popupClassName } = popupOpts;
563
572
  const selectGridOpts = computeSelectGridOpts.value;
564
573
  const rowOpts = computeRowOpts.value;
565
574
  const popupWrapperStyle = computePopupWrapperStyle.value;
566
575
  const headerSlot = slots.header;
567
576
  const footerSlot = slots.footer;
568
577
  const prefixSlot = slots.prefix;
578
+ const ppClassName = popupOpts.className;
569
579
  if (formReadonly) {
570
580
  return h('div', {
571
581
  ref: refElem,
@@ -612,7 +622,7 @@ export default defineVxeComponent({
612
622
  }, [
613
623
  h('div', {
614
624
  ref: refOptionPanel,
615
- class: ['vxe-table--ignore-clear vxe-table-select--panel', popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $tableSelect: $xeTableSelect }) : popupClassName) : '', {
625
+ class: ['vxe-table--ignore-clear vxe-table-select--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $tableSelect: $xeTableSelect }) : ppClassName) : '', {
616
626
  [`size--${vSize}`]: vSize,
617
627
  'is--transfer': btnTransfer,
618
628
  'ani--leave': !loading && isAniVisible,
@@ -42,12 +42,20 @@ export default defineVxeComponent({
42
42
  filterConfig: Object,
43
43
  multiple: Boolean,
44
44
  className: [String, Function],
45
+ /**
46
+ * 已废弃,请使用 popupConfig.className
47
+ * @deprecated
48
+ */
45
49
  popupClassName: [String, Function],
46
50
  prefixIcon: String,
47
51
  placement: String,
48
52
  lazyOptions: Array,
49
53
  options: Array,
50
54
  optionProps: Object,
55
+ /**
56
+ * 已废弃,请使用 popupConfig.zIndex
57
+ * @deprecated
58
+ */
51
59
  zIndex: Number,
52
60
  size: {
53
61
  type: String,
@@ -152,8 +160,12 @@ export default defineVxeComponent({
152
160
  });
153
161
  const computeBtnTransfer = computed(() => {
154
162
  const { transfer } = props;
163
+ const popupOpts = computePopupOpts.value;
164
+ if (XEUtils.isBoolean(popupOpts.transfer)) {
165
+ return popupOpts.transfer;
166
+ }
155
167
  if (transfer === null) {
156
- const globalTransfer = getConfig().select.transfer;
168
+ const globalTransfer = getConfig().treeSelect.transfer;
157
169
  if (XEUtils.isBoolean(globalTransfer)) {
158
170
  return globalTransfer;
159
171
  }
@@ -335,9 +347,10 @@ export default defineVxeComponent({
335
347
  internalData.fullNodeMaps = nodeMaps;
336
348
  };
337
349
  const updateZindex = () => {
338
- const { zIndex } = props;
339
- if (zIndex) {
340
- reactData.panelIndex = zIndex;
350
+ const popupOpts = computePopupOpts.value;
351
+ const customZIndex = popupOpts.zIndex || props.zIndex;
352
+ if (customZIndex) {
353
+ reactData.panelIndex = XEUtils.toNumber(customZIndex);
341
354
  }
342
355
  else if (reactData.panelIndex < getLastZIndex()) {
343
356
  reactData.panelIndex = nextZIndex();
@@ -349,9 +362,10 @@ export default defineVxeComponent({
349
362
  const targetElem = refElem.value;
350
363
  const panelElem = refOptionPanel.value;
351
364
  const btnTransfer = computeBtnTransfer.value;
365
+ const popupOpts = computePopupOpts.value;
352
366
  const handleStyle = () => {
353
367
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
354
- placement,
368
+ placement: popupOpts.placement || placement,
355
369
  teleportTo: btnTransfer
356
370
  });
357
371
  const panelStyle = Object.assign(ppObj.style, {
@@ -601,7 +615,7 @@ export default defineVxeComponent({
601
615
  const footerSlot = slots.footer;
602
616
  const prefixSlot = slots.prefix;
603
617
  const popupOpts = computePopupOpts.value;
604
- const popupClassName = popupOpts.className || props.popupClassName;
618
+ const ppClassName = popupOpts.className || props.popupClassName;
605
619
  if (formReadonly) {
606
620
  return h('div', {
607
621
  ref: refElem,
@@ -678,7 +692,7 @@ export default defineVxeComponent({
678
692
  }, [
679
693
  h('div', {
680
694
  ref: refOptionPanel,
681
- class: ['vxe-table--ignore-clear vxe-tree-select--panel', popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $treeSelect: $xeTreeSelect }) : popupClassName) : '', {
695
+ class: ['vxe-table--ignore-clear vxe-tree-select--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $treeSelect: $xeTreeSelect }) : ppClassName) : '', {
682
696
  [`size--${vSize}`]: vSize,
683
697
  'is--transfer': btnTransfer,
684
698
  'ani--leave': !loading && isAniVisible,
package/es/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VxeUI, setConfig, setIcon } from '@vxe-ui/core';
2
2
  import { dynamicApp } from '../dynamics';
3
3
  import { warnLog } from './src/log';
4
- export const version = "4.11.43";
4
+ export const version = "4.11.45";
5
5
  VxeUI.uiVersion = version;
6
6
  VxeUI.dynamicApp = dynamicApp;
7
7
  export function config(options) {
package/es/ui/src/log.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { log } from '@vxe-ui/core';
2
- const version = `ui v${"4.11.43"}`;
2
+ const version = `ui v${"4.11.45"}`;
3
3
  export const warnLog = log.create('warn', version);
4
4
  export const errLog = log.create('error', version);
@@ -108,6 +108,7 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
108
108
  type: Boolean,
109
109
  default: () => (0, _ui.getConfig)().button.destroyOnClose
110
110
  },
111
+ popupConfig: Object,
111
112
  /**
112
113
  * 是否将弹框容器插入于 body 内
113
114
  */
@@ -167,6 +168,10 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
167
168
  const {
168
169
  transfer
169
170
  } = props;
171
+ const popupOpts = computePopupOpts.value;
172
+ if (_xeUtils.default.isBoolean(popupOpts.transfer)) {
173
+ return popupOpts.transfer;
174
+ }
170
175
  if (transfer === null) {
171
176
  const globalTransfer = (0, _ui.getConfig)().button.transfer;
172
177
  if (_xeUtils.default.isBoolean(globalTransfer)) {
@@ -266,6 +271,9 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
266
271
  }
267
272
  return [];
268
273
  });
274
+ const computePopupOpts = (0, _vue.computed)(() => {
275
+ return Object.assign({}, (0, _ui.getConfig)().button.popupConfig, props.popupConfig);
276
+ });
269
277
  const computePrefixTipOpts = (0, _vue.computed)(() => {
270
278
  return Object.assign({}, (0, _ui.getConfig)().button.prefixTooltip, props.prefixTooltip);
271
279
  });
@@ -273,11 +281,10 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
273
281
  return Object.assign({}, (0, _ui.getConfig)().button.suffixTooltip, props.suffixTooltip);
274
282
  });
275
283
  const updateZindex = () => {
276
- const {
277
- zIndex
278
- } = props;
279
- if (zIndex) {
280
- reactData.panelIndex = zIndex;
284
+ const popupOpts = computePopupOpts.value;
285
+ const customZIndex = popupOpts.zIndex || props.zIndex;
286
+ if (customZIndex) {
287
+ reactData.panelIndex = _xeUtils.default.toNumber(customZIndex);
281
288
  } else if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
282
289
  reactData.panelIndex = (0, _utils.nextZIndex)();
283
290
  }
@@ -292,9 +299,10 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
292
299
  const targetElem = refButton.value;
293
300
  const panelElem = refBtnPanel.value;
294
301
  const btnTransfer = computeBtnTransfer.value;
302
+ const popupOpts = computePopupOpts.value;
295
303
  const handleStyle = () => {
296
304
  const ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
297
- placement,
305
+ placement: popupOpts.placement || placement,
298
306
  teleportTo: btnTransfer
299
307
  });
300
308
  const panelStyle = Object.assign(ppObj.style, {
@@ -602,7 +610,6 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
602
610
  const renderVN = () => {
603
611
  const {
604
612
  className,
605
- popupClassName,
606
613
  trigger,
607
614
  title,
608
615
  routerLink,
@@ -628,8 +635,10 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
628
635
  const btnDisabled = computeBtnDisabled.value;
629
636
  const permissionInfo = computePermissionInfo.value;
630
637
  const downBtnList = computeDownBtnList.value;
638
+ const popupOpts = computePopupOpts.value;
631
639
  const vSize = computeSize.value;
632
640
  const dropdownsSlot = slots.dropdowns;
641
+ const ppClassName = popupOpts.className || props.popupClassName;
633
642
  if (!permissionInfo.visible) {
634
643
  return (0, _ui.renderEmptyElement)($xeButton);
635
644
  }
@@ -703,9 +712,9 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
703
712
  disabled: btnTransfer ? !initialized : true
704
713
  }, [(0, _vue.h)('div', Object.assign({
705
714
  ref: refBtnPanel,
706
- class: ['vxe-button--dropdown-panel', popupClassName ? _xeUtils.default.isFunction(popupClassName) ? popupClassName({
715
+ class: ['vxe-button--dropdown-panel', ppClassName ? _xeUtils.default.isFunction(ppClassName) ? ppClassName({
707
716
  $button: $xeButton
708
- }) : popupClassName : '', {
717
+ }) : ppClassName : '', {
709
718
  [`size--${vSize}`]: vSize,
710
719
  'is--transfer': btnTransfer,
711
720
  'ani--leave': isAniVisible,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_tooltip=_interopRequireDefault(require("../../tooltip"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const VxeButtonComponent=(0,_comp.defineVxeComponent)({name:"VxeButton",props:{type:String,mode:String,className:[String,Function],popupClassName:[String,Function],size:{type:String,default:()=>(0,_ui.getConfig)().button.size||(0,_ui.getConfig)().size},zIndex:Number,name:[String,Number],routerLink:Object,permissionCode:[String,Number],content:String,placement:String,status:String,title:String,shadow:Boolean,icon:String,iconRender:Object,prefixIcon:String,prefixRender:Object,suffixIcon:String,suffixRender:Object,round:Boolean,circle:Boolean,disabled:Boolean,loading:Boolean,trigger:{type:String,default:()=>(0,_ui.getConfig)().button.trigger},align:String,prefixTooltip:Object,suffixTooltip:Object,options:Array,showDropdownIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().button.showDropdownIcon},destroyOnClose:{type:Boolean,default:()=>(0,_ui.getConfig)().button.destroyOnClose},transfer:{type:Boolean,default:null}},emits:["click","mouseenter","mouseleave","dropdown-click","dropdownClick","contextmenu"],setup(I,e){const{slots:N,emit:i}=e,n=(0,_vue.inject)("$xeModal",null),o=(0,_vue.inject)("$xeDrawer",null),u=(0,_vue.inject)("$xeTable",null),s=(0,_vue.inject)("$xeTree",null),a=(0,_vue.inject)("$xeForm",null),l=(0,_vue.inject)("$xeButtonGroup",null);var t=_xeUtils.default.uniqueId();const P=(0,_ui.useSize)(I)["computeSize"],S=(0,_ui.usePermission)(I)["computePermissionInfo"],B=(0,_vue.reactive)({initialized:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1,panelIndex:0,panelStyle:{},panelPlacement:""}),r={showTime:void 0,tooltipTimeout:void 0},j=(0,_vue.ref)(),z=(0,_vue.ref)(),$=(0,_vue.ref)(),c={refElem:j},V={xID:t,props:I,context:e,reactData:B,internalData:r,getRefMaps:()=>c};const E=(0,_vue.computed)(()=>{var e=I["transfer"];if(null===e){var t=(0,_ui.getConfig)().button.transfer;if(_xeUtils.default.isBoolean(t))return t;if(u||s||n||o||a)return!0}return e}),M=(0,_vue.computed)(()=>{var e=I["disabled"],t=S.value;return e||t.disabled}),U=(0,_vue.computed)(()=>{var e=I["type"];return!!e&&-1<["submit","reset","button"].indexOf(e)}),D=(0,_vue.computed)(()=>{var{type:e,mode:t}=I;return"text"===t||"text"===e||l&&"text"===l.props.mode?"text":"button"}),Z=(0,_vue.computed)(()=>{var e=I["status"];return e||(l?l.props.status:"")}),J=(0,_vue.computed)(()=>{var e=I["align"];return e||!!l&&l.props.align}),K=(0,_vue.computed)(()=>{var e=I["round"];return e||!!l&&l.props.round}),Q=(0,_vue.computed)(()=>{var e=I["circle"];return e||!!l&&l.props.circle}),X=(0,_vue.computed)(()=>{var e=I["options"];return e?e.filter(e=>{e=e.permissionCode;return!e||_ui.permission.checkVisible(e)}):[]}),_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.prefixTooltip,I.prefixTooltip)),b=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.suffixTooltip,I.suffixTooltip)),p=()=>{var e=I["zIndex"];e?B.panelIndex=e:B.panelIndex<(0,_utils.getLastZIndex)()&&(B.panelIndex=(0,_utils.nextZIndex)())},v=()=>{const n=I["placement"],i=B["panelIndex"],o=z.value,u=$.value,s=E.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(o,u,{placement:n,teleportTo:s}),t=Object.assign(e.style,{zIndex:i});B.panelStyle=t,B.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},q=e=>{l&&l.handleClick({name:I.name},e),W("click",{$event:e},e)},ee=e=>{0===e.button&&e.stopPropagation()},te=e=>{var t=e.currentTarget;const n=$.value;var{flag:t,targetElem:i}=(0,_dom.getEventTargetNode)(e,t,"vxe-button");t&&(n&&(n.dataset.active="N"),B.visiblePanel=!1,setTimeout(()=>{n&&"Y"===n.dataset.active||(B.isAniVisible=!1)},350),W("dropdown-click",{name:i.getAttribute("name"),option:null},e))},A=()=>{const e=$.value;e&&(e.dataset.active="Y",B.isAniVisible=!0,setTimeout(()=>{"Y"===e.dataset.active&&(B.visiblePanel=!0,p(),v(),setTimeout(()=>{B.visiblePanel&&v()},50))},20))},ne=e=>{var t=I["loading"];M.value||t||(d(),R(e))},ie=e=>{G(),F(e)},R=e=>{W("mouseenter",{},e)},F=e=>{W("mouseleave",{},e)},L=e=>{W("contextmenu",{},e)},Y=e=>{var{loading:t,trigger:n}=I;M.value||t||("click"===n&&(B.visiblePanel?G:d)(),q(e))},d=()=>{var e=I["trigger"];const t=$.value;return t&&(t.dataset.active="Y",B.initialized||(B.initialized=!0),r.showTime=setTimeout(()=>{"Y"===t.dataset.active?A():B.isAniVisible=!1},"click"===e?50:250)),(0,_vue.nextTick)()},G=()=>{const e=$.value;return clearTimeout(r.showTime),e?(e.dataset.active="N",setTimeout(()=>{"Y"!==e.dataset.active&&(B.visiblePanel=!1,setTimeout(()=>{"Y"!==e.dataset.active&&(B.isAniVisible=!1)},350))},100)):(B.isAniVisible=!1,B.visiblePanel=!1),(0,_vue.nextTick)()},oe=()=>{G()},m=(e,t)=>(0,_vue.h)(_tooltip.default,{useHTML:e.useHTML,content:e.content,enterable:e.enterable,theme:e.theme},{default(){return(0,_vue.h)("span",{class:`vxe-button--item vxe-button--tooltip-${t}-icon`},[(0,_vue.h)("i",{class:e.icon||(0,_ui.getIcon)().BUTTON_TOOLTIP_ICON})])}}),H=()=>{var{content:e,suffixIcon:t,loading:n,prefixTooltip:i,suffixTooltip:o,suffixRender:u}=I,s=I.prefixIcon||I.icon,a=I.prefixRender||I.iconRender,l=_.value,r=b.value,c=N.prefix||N.icon,v=N.suffix,d=N.default,p=[];return i&&p.push(m(l,"prefix")),n?p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--loading-icon",(0,_ui.getIcon)().BUTTON_LOADING]})):c?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-prefix-icon"},c({}))):a?(l=(i=_ui.renderer.get(a.name))?i.renderButtonPrefix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-prefix-icon"]},l?(0,_vn.getSlotVNs)(l(a,{$button:V})):[]))):s&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--prefix-icon",s]})),d?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},d({}))):e&&p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},(0,_utils.getFuncText)(e))),v?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-suffix-icon"},v({}))):u?(c=(n=_ui.renderer.get(u.name))?n.renderButtonSuffix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-suffix-icon"]},c?(0,_vn.getSlotVNs)(c(u,{$button:V})):[]))):t&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--suffix-icon",t]})),o&&p.push(m(r,"suffix")),p},W=(e,t,n)=>{i(e,(0,_ui.createEvent)(n,{$button:V},t))},x=(t={dispatchEvent:W,openPanel:d,closePanel:G,focus(){var e=z.value;return e&&e.focus(),(0,_vue.nextTick)()},blur(){var e=z.value;return e&&e.blur(),(0,_vue.nextTick)()}},e=>{var t=$.value;B.visiblePanel&&!(0,_dom.getEventTargetNode)(e,t).flag&&G()}),f=e=>{var t,n=M.value,i=B["visiblePanel"];n||(n=j.value,t=$.value,B.isActivated=(0,_dom.getEventTargetNode)(e,n).flag||(0,_dom.getEventTargetNode)(e,t).flag,i&&!B.isActivated&&G())},g=()=>{var e=B["visiblePanel"];e&&v()};Object.assign(V,t);return V.renderVN=()=>{const{className:e,popupClassName:t,trigger:n,title:i,routerLink:o,type:u,destroyOnClose:s,name:a,loading:l,shadow:r,showDropdownIcon:c}=I;var{initialized:v,isAniVisible:d,visiblePanel:p}=B,m=U.value;const _=D.value;var b=Z.value;const x=K.value;var f=J.value;const g=Q.value;var h,T=E.value,w=M.value,C=S.value,y=X.value,k=P.value,O=N.dropdowns;return C.visible?O||y.length?(C={onContextmenu:L},h={},"hover"===n&&(C.onMouseenter=ne,C.onMouseleave=ie,h.onMouseenter=A,h.onMouseleave=oe),(0,_vue.h)("div",{ref:j,class:["vxe-button--dropdown",e?_xeUtils.default.isFunction(e)?e({$button:V}):e:"",{["size--"+k]:k,"is--active":p}]},[o?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),Object.assign({ref:z,class:["vxe-button","vxe-button--link","type--"+_,f?"align--"+f:"",e?_xeUtils.default.isFunction(e)?e({$button:V}):e:"",{["size--"+k]:k,["theme--"+b]:b,"is--round":x,"is--circle":g,"is--shadow":r,"is--disabled":w||l,"is--loading":l}],title:i,name:a,type:m?u:"button",disabled:w||l,to:o,onClick:Y},C),{default(){return H().concat(c?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])}}):(0,_vue.h)("button",Object.assign({ref:z,class:["vxe-button","type--"+_,f?"align--"+f:"",e?_xeUtils.default.isFunction(e)?e({$button:V}):e:"",{["size--"+k]:k,["theme--"+b]:b,"is--round":x,"is--circle":g,"is--shadow":r,"is--disabled":w||l,"is--loading":l}],title:i,name:a,type:m?u:"button",disabled:w||l,onClick:Y},C),H().concat(c?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!T||!v},[(0,_vue.h)("div",Object.assign({ref:$,class:["vxe-button--dropdown-panel",t?_xeUtils.default.isFunction(t)?t({$button:V}):t:"",{["size--"+k]:k,"is--transfer":T,"ani--leave":d,"ani--enter":p}],placement:B.panelPlacement,style:B.panelStyle},h),v&&(p||d)?[O?(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper",onMousedown:ee,onClick:te},v&&(!s||p||d)?O({}):[]):(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper"},v&&(!s||p||d)?y.map((i,e)=>(0,_vue.h)(VxeButtonComponent,{key:e,type:i.type,mode:i.mode||_,className:i.className,name:i.name,routerLink:i.routerLink,permissionCode:i.permissionCode,title:i.title,content:i.content,status:i.status,icon:i.icon,round:_xeUtils.default.isBoolean(i.round)?i.round:"text"!==_&&x,circle:_xeUtils.default.isBoolean(i.circle)?i.circle:"text"!==_&&g,disabled:i.disabled,loading:i.loading,align:i.align,onClick(e){var t=e,n=i;t=e.$event,G(),W("dropdown-click",{name:n.name,option:n},t)}})):[])]:[])])])):o?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{ref:z,class:["vxe-button","vxe-button--link","type--"+_,f?"align--"+f:"",e?_xeUtils.default.isFunction(e)?e({$button:V}):e:"",{["size--"+k]:k,["theme--"+b]:b,"is--round":x,"is--circle":g,"is--shadow":r,"is--disabled":w||l,"is--loading":l}],title:i,name:a,type:m?u:"button",disabled:w||l,to:o,onClick:q,onMouseenter:R,onMouseleave:F,onContextmenu:L},{default(){return H()}}):(0,_vue.h)("button",{ref:z,class:["vxe-button","type--"+_,f?"align--"+f:"",e?_xeUtils.default.isFunction(e)?e({$button:V}):e:"",{["size--"+k]:k,["theme--"+b]:b,"is--round":x,"is--circle":g,"is--shadow":r,"is--disabled":w||l,"is--loading":l}],title:i,name:a,type:m?u:"button",disabled:w||l,onClick:q,onMouseenter:R,onMouseleave:F,onContextmenu:L},H()):(0,_ui.renderEmptyElement)(V)},(0,_vue.onMounted)(()=>{"text"===I.type&&(0,_log.warnLog)("vxe.error.delProp",["[button] type=text","mode=text"]),_ui.globalEvents.on(V,"mousewheel",x),_ui.globalEvents.on(V,"mousedown",f),_ui.globalEvents.on(V,"resize",g)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(V,"mousewheel"),_ui.globalEvents.off(V,"mousedown"),_ui.globalEvents.off(V,"resize")}),V},render(){return this.renderVN()}});var _default=exports.default=VxeButtonComponent;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_tooltip=_interopRequireDefault(require("../../tooltip"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const VxeButtonComponent=(0,_comp.defineVxeComponent)({name:"VxeButton",props:{type:String,mode:String,className:[String,Function],popupClassName:[String,Function],size:{type:String,default:()=>(0,_ui.getConfig)().button.size||(0,_ui.getConfig)().size},zIndex:Number,name:[String,Number],routerLink:Object,permissionCode:[String,Number],content:String,placement:String,status:String,title:String,shadow:Boolean,icon:String,iconRender:Object,prefixIcon:String,prefixRender:Object,suffixIcon:String,suffixRender:Object,round:Boolean,circle:Boolean,disabled:Boolean,loading:Boolean,trigger:{type:String,default:()=>(0,_ui.getConfig)().button.trigger},align:String,prefixTooltip:Object,suffixTooltip:Object,options:Array,showDropdownIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().button.showDropdownIcon},destroyOnClose:{type:Boolean,default:()=>(0,_ui.getConfig)().button.destroyOnClose},popupConfig:Object,transfer:{type:Boolean,default:null}},emits:["click","mouseenter","mouseleave","dropdown-click","dropdownClick","contextmenu"],setup(N,e){const{slots:I,emit:i}=e,n=(0,_vue.inject)("$xeModal",null),o=(0,_vue.inject)("$xeDrawer",null),u=(0,_vue.inject)("$xeTable",null),s=(0,_vue.inject)("$xeTree",null),a=(0,_vue.inject)("$xeForm",null),l=(0,_vue.inject)("$xeButtonGroup",null);var t=_xeUtils.default.uniqueId();const P=(0,_ui.useSize)(N)["computeSize"],S=(0,_ui.usePermission)(N)["computePermissionInfo"],B=(0,_vue.reactive)({initialized:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1,panelIndex:0,panelStyle:{},panelPlacement:""}),r={showTime:void 0,tooltipTimeout:void 0},j=(0,_vue.ref)(),z=(0,_vue.ref)(),U=(0,_vue.ref)(),c={refElem:j},$={xID:t,props:N,context:e,reactData:B,internalData:r,getRefMaps:()=>c};const V=(0,_vue.computed)(()=>{var e=N["transfer"],t=D.value;if(_xeUtils.default.isBoolean(t.transfer))return t.transfer;if(null===e){t=(0,_ui.getConfig)().button.transfer;if(_xeUtils.default.isBoolean(t))return t;if(u||s||n||o||a)return!0}return e}),E=(0,_vue.computed)(()=>{var e=N["disabled"],t=S.value;return e||t.disabled}),M=(0,_vue.computed)(()=>{var e=N["type"];return!!e&&-1<["submit","reset","button"].indexOf(e)}),Z=(0,_vue.computed)(()=>{var{type:e,mode:t}=N;return"text"===t||"text"===e||l&&"text"===l.props.mode?"text":"button"}),J=(0,_vue.computed)(()=>{var e=N["status"];return e||(l?l.props.status:"")}),K=(0,_vue.computed)(()=>{var e=N["align"];return e||!!l&&l.props.align}),Q=(0,_vue.computed)(()=>{var e=N["round"];return e||!!l&&l.props.round}),X=(0,_vue.computed)(()=>{var e=N["circle"];return e||!!l&&l.props.circle}),ee=(0,_vue.computed)(()=>{var e=N["options"];return e?e.filter(e=>{e=e.permissionCode;return!e||_ui.permission.checkVisible(e)}):[]}),D=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.popupConfig,N.popupConfig)),_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.prefixTooltip,N.prefixTooltip)),b=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.suffixTooltip,N.suffixTooltip)),p=()=>{var e=D.value.zIndex||N.zIndex;e?B.panelIndex=_xeUtils.default.toNumber(e):B.panelIndex<(0,_utils.getLastZIndex)()&&(B.panelIndex=(0,_utils.nextZIndex)())},v=()=>{const n=N["placement"],i=B["panelIndex"],o=z.value,u=U.value,s=V.value,a=D.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(o,u,{placement:a.placement||n,teleportTo:s}),t=Object.assign(e.style,{zIndex:i});B.panelStyle=t,B.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},q=e=>{l&&l.handleClick({name:N.name},e),W("click",{$event:e},e)},te=e=>{0===e.button&&e.stopPropagation()},ne=e=>{var t=e.currentTarget;const n=U.value;var{flag:t,targetElem:i}=(0,_dom.getEventTargetNode)(e,t,"vxe-button");t&&(n&&(n.dataset.active="N"),B.visiblePanel=!1,setTimeout(()=>{n&&"Y"===n.dataset.active||(B.isAniVisible=!1)},350),W("dropdown-click",{name:i.getAttribute("name"),option:null},e))},A=()=>{const e=U.value;e&&(e.dataset.active="Y",B.isAniVisible=!0,setTimeout(()=>{"Y"===e.dataset.active&&(B.visiblePanel=!0,p(),v(),setTimeout(()=>{B.visiblePanel&&v()},50))},20))},ie=e=>{var t=N["loading"];E.value||t||(d(),R(e))},oe=e=>{G(),F(e)},R=e=>{W("mouseenter",{},e)},F=e=>{W("mouseleave",{},e)},L=e=>{W("contextmenu",{},e)},Y=e=>{var{loading:t,trigger:n}=N;E.value||t||("click"===n&&(B.visiblePanel?G:d)(),q(e))},d=()=>{var e=N["trigger"];const t=U.value;return t&&(t.dataset.active="Y",B.initialized||(B.initialized=!0),r.showTime=setTimeout(()=>{"Y"===t.dataset.active?A():B.isAniVisible=!1},"click"===e?50:250)),(0,_vue.nextTick)()},G=()=>{const e=U.value;return clearTimeout(r.showTime),e?(e.dataset.active="N",setTimeout(()=>{"Y"!==e.dataset.active&&(B.visiblePanel=!1,setTimeout(()=>{"Y"!==e.dataset.active&&(B.isAniVisible=!1)},350))},100)):(B.isAniVisible=!1,B.visiblePanel=!1),(0,_vue.nextTick)()},ue=()=>{G()},m=(e,t)=>(0,_vue.h)(_tooltip.default,{useHTML:e.useHTML,content:e.content,enterable:e.enterable,theme:e.theme},{default(){return(0,_vue.h)("span",{class:`vxe-button--item vxe-button--tooltip-${t}-icon`},[(0,_vue.h)("i",{class:e.icon||(0,_ui.getIcon)().BUTTON_TOOLTIP_ICON})])}}),H=()=>{var{content:e,suffixIcon:t,loading:n,prefixTooltip:i,suffixTooltip:o,suffixRender:u}=N,s=N.prefixIcon||N.icon,a=N.prefixRender||N.iconRender,l=_.value,r=b.value,c=I.prefix||I.icon,v=I.suffix,d=I.default,p=[];return i&&p.push(m(l,"prefix")),n?p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--loading-icon",(0,_ui.getIcon)().BUTTON_LOADING]})):c?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-prefix-icon"},c({}))):a?(l=(i=_ui.renderer.get(a.name))?i.renderButtonPrefix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-prefix-icon"]},l?(0,_vn.getSlotVNs)(l(a,{$button:$})):[]))):s&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--prefix-icon",s]})),d?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},d({}))):e&&p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},(0,_utils.getFuncText)(e))),v?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-suffix-icon"},v({}))):u?(c=(n=_ui.renderer.get(u.name))?n.renderButtonSuffix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-suffix-icon"]},c?(0,_vn.getSlotVNs)(c(u,{$button:$})):[]))):t&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--suffix-icon",t]})),o&&p.push(m(r,"suffix")),p},W=(e,t,n)=>{i(e,(0,_ui.createEvent)(n,{$button:$},t))},x=(t={dispatchEvent:W,openPanel:d,closePanel:G,focus(){var e=z.value;return e&&e.focus(),(0,_vue.nextTick)()},blur(){var e=z.value;return e&&e.blur(),(0,_vue.nextTick)()}},e=>{var t=U.value;B.visiblePanel&&!(0,_dom.getEventTargetNode)(e,t).flag&&G()}),f=e=>{var t,n=E.value,i=B["visiblePanel"];n||(n=j.value,t=U.value,B.isActivated=(0,_dom.getEventTargetNode)(e,n).flag||(0,_dom.getEventTargetNode)(e,t).flag,i&&!B.isActivated&&G())},g=()=>{var e=B["visiblePanel"];e&&v()};Object.assign($,t);return $.renderVN=()=>{const{className:e,trigger:t,title:n,routerLink:i,type:o,destroyOnClose:u,name:s,loading:a,shadow:l,showDropdownIcon:r}=N;var{initialized:c,isAniVisible:v,visiblePanel:d}=B,p=M.value;const m=Z.value;var _=J.value;const b=Q.value;var x=K.value;const f=X.value;var g,h=V.value,T=E.value,C=S.value,w=ee.value,y=D.value,O=P.value,k=I.dropdowns,y=y.className||N.popupClassName;return C.visible?k||w.length?(C={onContextmenu:L},g={},"hover"===t&&(C.onMouseenter=ie,C.onMouseleave=oe,g.onMouseenter=A,g.onMouseleave=ue),(0,_vue.h)("div",{ref:j,class:["vxe-button--dropdown",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+O]:O,"is--active":d}]},[i?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),Object.assign({ref:z,class:["vxe-button","vxe-button--link","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+O]:O,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--shadow":l,"is--disabled":T||a,"is--loading":a}],title:n,name:s,type:p?o:"button",disabled:T||a,to:i,onClick:Y},C),{default(){return H().concat(r?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])}}):(0,_vue.h)("button",Object.assign({ref:z,class:["vxe-button","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+O]:O,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--shadow":l,"is--disabled":T||a,"is--loading":a}],title:n,name:s,type:p?o:"button",disabled:T||a,onClick:Y},C),H().concat(r?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!h||!c},[(0,_vue.h)("div",Object.assign({ref:U,class:["vxe-button--dropdown-panel",y?_xeUtils.default.isFunction(y)?y({$button:$}):y:"",{["size--"+O]:O,"is--transfer":h,"ani--leave":v,"ani--enter":d}],placement:B.panelPlacement,style:B.panelStyle},g),c&&(d||v)?[k?(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper",onMousedown:te,onClick:ne},c&&(!u||d||v)?k({}):[]):(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper"},c&&(!u||d||v)?w.map((i,e)=>(0,_vue.h)(VxeButtonComponent,{key:e,type:i.type,mode:i.mode||m,className:i.className,name:i.name,routerLink:i.routerLink,permissionCode:i.permissionCode,title:i.title,content:i.content,status:i.status,icon:i.icon,round:_xeUtils.default.isBoolean(i.round)?i.round:"text"!==m&&b,circle:_xeUtils.default.isBoolean(i.circle)?i.circle:"text"!==m&&f,disabled:i.disabled,loading:i.loading,align:i.align,onClick(e){var t=e,n=i;t=e.$event,G(),W("dropdown-click",{name:n.name,option:n},t)}})):[])]:[])])])):i?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{ref:z,class:["vxe-button","vxe-button--link","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+O]:O,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--shadow":l,"is--disabled":T||a,"is--loading":a}],title:n,name:s,type:p?o:"button",disabled:T||a,to:i,onClick:q,onMouseenter:R,onMouseleave:F,onContextmenu:L},{default(){return H()}}):(0,_vue.h)("button",{ref:z,class:["vxe-button","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+O]:O,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--shadow":l,"is--disabled":T||a,"is--loading":a}],title:n,name:s,type:p?o:"button",disabled:T||a,onClick:q,onMouseenter:R,onMouseleave:F,onContextmenu:L},H()):(0,_ui.renderEmptyElement)($)},(0,_vue.onMounted)(()=>{"text"===N.type&&(0,_log.warnLog)("vxe.error.delProp",["[button] type=text","mode=text"]),_ui.globalEvents.on($,"mousewheel",x),_ui.globalEvents.on($,"mousedown",f),_ui.globalEvents.on($,"resize",g)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off($,"mousewheel"),_ui.globalEvents.off($,"mousedown"),_ui.globalEvents.off($,"resize")}),$},render(){return this.renderVN()}});var _default=exports.default=VxeButtonComponent;
@@ -115,6 +115,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
115
115
  type: Boolean,
116
116
  default: null
117
117
  },
118
+ popupConfig: Object,
118
119
  shortcutConfig: Object,
119
120
  // 已废弃 startWeek,被 startDay 替换
120
121
  startWeek: Number
@@ -169,6 +170,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
169
170
  const {
170
171
  transfer
171
172
  } = props;
173
+ const popupOpts = computePopupOpts.value;
174
+ if (_xeUtils.default.isBoolean(popupOpts.transfer)) {
175
+ return popupOpts.transfer;
176
+ }
172
177
  if (transfer === null) {
173
178
  const globalTransfer = (0, _ui.getConfig)().datePicker.transfer;
174
179
  if (_xeUtils.default.isBoolean(globalTransfer)) {
@@ -245,6 +250,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
245
250
  } = props;
246
251
  return immediate;
247
252
  });
253
+ const computePopupOpts = (0, _vue.computed)(() => {
254
+ return Object.assign({}, (0, _ui.getConfig)().datePicker.popupConfig, props.popupConfig);
255
+ });
248
256
  const computeShortcutOpts = (0, _vue.computed)(() => {
249
257
  return Object.assign({}, (0, _ui.getConfig)().datePicker.shortcutConfig, props.shortcutConfig);
250
258
  });
@@ -583,11 +591,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
583
591
  };
584
592
  // 弹出面板
585
593
  const updateZindex = () => {
586
- const {
587
- zIndex
588
- } = props;
589
- if (zIndex) {
590
- reactData.panelIndex = zIndex;
594
+ const popupOpts = computePopupOpts.value;
595
+ const customZIndex = popupOpts.zIndex || props.zIndex;
596
+ if (customZIndex) {
597
+ reactData.panelIndex = _xeUtils.default.toNumber(customZIndex);
591
598
  } else if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
592
599
  reactData.panelIndex = (0, _utils.nextZIndex)();
593
600
  }
@@ -602,9 +609,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
602
609
  const targetElem = refInputTarget.value;
603
610
  const panelElem = refInputPanel.value;
604
611
  const btnTransfer = computeBtnTransfer.value;
612
+ const popupOpts = computePopupOpts.value;
605
613
  const handleStyle = () => {
606
614
  const ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
607
- placement,
615
+ placement: popupOpts.placement || placement,
608
616
  teleportTo: btnTransfer
609
617
  });
610
618
  const panelStyle = Object.assign(ppObj.style, {
@@ -793,6 +801,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
793
801
  const isClearable = computeIsClearable.value;
794
802
  const isDateTimeType = computeIsDateTimeType.value;
795
803
  const shortcutList = computeShortcutList.value;
804
+ const popupOpts = computePopupOpts.value;
796
805
  const {
797
806
  position
798
807
  } = shortcutOpts;
@@ -802,6 +811,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
802
811
  const bottomSlot = slots.bottom;
803
812
  const leftSlot = slots.left;
804
813
  const rightSlot = slots.right;
814
+ const ppClassName = popupOpts.className;
805
815
  const hasShortcutBtn = shortcutList.length > 0;
806
816
  const showConfirmBtn = showConfirmButton === null ? isDateTimeType || multiple : showConfirmButton;
807
817
  const showClearBtn = showClearButton === null ? isClearable && showConfirmBtn && type !== 'time' : showClearButton;
@@ -810,7 +820,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
810
820
  disabled: btnTransfer ? !initialized : true
811
821
  }, [(0, _vue.h)('div', {
812
822
  ref: refInputPanel,
813
- class: ['vxe-table--ignore-clear vxe-date-picker--panel', `type--${type}`, {
823
+ class: ['vxe-table--ignore-clear vxe-date-picker--panel', `type--${type}`, ppClassName ? _xeUtils.default.isFunction(ppClassName) ? ppClassName({
824
+ $datePicker: $xeDatePicker
825
+ }) : ppClassName : '', {
814
826
  [`size--${vSize}`]: vSize,
815
827
  'is--transfer': btnTransfer,
816
828
  'ani--leave': isAniVisible,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("../../date-panel/src/util"),_log=require("../../ui/src/log"),_datePanel=_interopRequireDefault(require("../../date-panel/src/date-panel")),_button=_interopRequireDefault(require("../../button/src/button")),_buttonGroup=_interopRequireDefault(require("../../button/src/button-group"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeDatePicker",props:{modelValue:[String,Number,Date],immediate:{type:Boolean,default:!0},name:String,type:{type:String,default:"date"},clearable:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.clearable},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},placeholder:String,autoComplete:{type:String,default:"off"},form:String,className:String,zIndex:Number,size:{type:String,default:()=>(0,_ui.getConfig)().datePicker.size||(0,_ui.getConfig)().size},multiple:Boolean,limitCount:{type:[String,Number],default:()=>(0,_ui.getConfig)().datePicker.limitCount},startDate:{type:[String,Number,Date],default:()=>(0,_ui.getConfig)().datePicker.startDate},endDate:{type:[String,Number,Date],default:()=>(0,_ui.getConfig)().datePicker.endDate},defaultDate:[String,Number,Date],defaultTime:[String,Number,Date],minDate:[String,Number,Date],maxDate:[String,Number,Date],startDay:{type:[String,Number],default:()=>(0,_ui.getConfig)().datePicker.startDay},labelFormat:String,valueFormat:String,timeFormat:String,editable:{type:Boolean,default:!0},festivalMethod:{type:Function,default:()=>(0,_ui.getConfig)().datePicker.festivalMethod},disabledMethod:{type:Function,default:()=>(0,_ui.getConfig)().datePicker.disabledMethod},selectDay:{type:[String,Number],default:()=>(0,_ui.getConfig)().datePicker.selectDay},showClearButton:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.showClearButton},showConfirmButton:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.showConfirmButton},autoClose:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.autoClose},prefixIcon:String,suffixIcon:String,placement:String,transfer:{type:Boolean,default:null},shortcutConfig:Object,startWeek:Number},emits:["update:modelValue","input","change","keydown","keyup","click","focus","blur","clear","confirm","prefix-click","suffix-click","date-prev","date-today","date-next","shortcut-click"],setup(k,e){const{slots:C,emit:n}=e,d=(0,_vue.inject)("$xeModal",null),g=(0,_vue.inject)("$xeDrawer",null),b=(0,_vue.inject)("$xeTable",null),o=(0,_vue.inject)("$xeForm",null),v=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const D=(0,_ui.useSize)(k)["computeSize"],E=(0,_vue.reactive)({initialized:!1,panelIndex:0,visiblePanel:!1,isAniVisible:!1,panelStyle:{},panelPlacement:"",isActivated:!1,inputValue:"",inputLabel:""}),a={hpTimeout:void 0},h=(0,_vue.ref)(),y=(0,_vue.ref)(),P=(0,_vue.ref)(),V=(0,_vue.ref)(),w=(0,_vue.ref)(),L={refElem:h,refInput:y},S={xID:t,props:k,context:e,reactData:E,internalData:a,getRefMaps:()=>L},T=(0,_vue.computed)(()=>{var e=k["transfer"];if(null===e){var t=(0,_ui.getConfig)().datePicker.transfer;if(_xeUtils.default.isBoolean(t))return t;if(b||d||g||o)return!0}return e}),x=(0,_vue.computed)(()=>{var e=k["readonly"];return null===e?!!o&&o.props.readonly:e}),I=(0,_vue.computed)(()=>{var e=k["disabled"];return null===e?!!o&&o.props.disabled:e}),N=(0,_vue.computed)(()=>{var e=k["type"];return"time"===e||"datetime"===e}),l=(0,_vue.computed)(()=>{return N.value||-1<["date","week","month","quarter","year"].indexOf(k.type)}),A=(0,_vue.computed)(()=>k.clearable),j=(0,_vue.computed)(()=>{var{type:e,editable:t,multiple:a}=k;return x.value||a||!t||"week"===e||"quarter"===e}),U=(0,_vue.computed)(()=>{var e=k["placeholder"];return(e=e||(0,_ui.getConfig)().datePicker.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),i=(0,_vue.computed)(()=>{var e=k["immediate"];return e}),F=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().datePicker.shortcutConfig,k.shortcutConfig)),B=(0,_vue.computed)(()=>{var e=F.value["options"];return e?e.map((e,t)=>Object.assign({name:""+(e.name||e.code||t)},e)):[]}),$=(0,_vue.computed)(()=>{var e=k["labelFormat"];return e||(0,_ui.getI18n)("vxe.input.date.labelFormat."+k.type)}),c=(0,_vue.computed)(()=>{var{type:e,valueFormat:t}=k;return(0,_util.handleValueFormat)(e,t)}),p=(0,_vue.computed)(()=>{var e=k["startDay"];return _xeUtils.default.toNumber(e)}),q=(0,_vue.computed)(()=>{const{type:t,multiple:e}=k;var a=E["inputValue"];const l=$.value,i=c.value,u=p.value;return(a?e?a.split(","):[a]:[]).map(e=>{return(0,_util.parseDateObj)(e,t,{valueFormat:i,labelFormat:l,firstDay:u}).label}).join(", ")}),u=()=>{var e=k["modelValue"];let t="";e&&(t=_xeUtils.default.isNumber(e)&&/^[0-9]{11,15}$/.test(""+e)?new Date(e):e),E.inputValue=t},r=e=>{var t=E["inputValue"];f(e.type,{value:t},e)},m=(e,t)=>{var a,{type:l,modelValue:i,valueFormat:u}=k,r=c.value;E.inputValue=e,(0,_util.hasTimestampValueType)(u)?(a=(a=(0,_util.parseDateValue)(e,l,{valueFormat:r}))?a.getTime():null,n("update:modelValue",a),i!==a&&(f("change",{value:a},t),o)&&v&&o.triggerItemEvent(t,v.itemConfig.field,a)):(0,_util.hasDateValueType)(u)?(a=(0,_util.parseDateValue)(e,l,{valueFormat:r}),n("update:modelValue",a),(i&&a?_xeUtils.default.toStringDate(i).getTime()!==a.getTime():i!==a)&&(f("change",{value:a},t),o)&&v&&o.triggerItemEvent(t,v.itemConfig.field,a)):(n("update:modelValue",e),_xeUtils.default.toValueString(i)!==e&&(f("change",{value:e},t),o)&&v&&o.triggerItemEvent(t,v.itemConfig.field,e))},O=e=>{var t=e.target.value;E.inputLabel=t,f("input",{value:t},e)},R=e=>{i.value||r(e)},K=e=>{E.isActivated=!0,l.value&&re(e),r(e)},G=e=>{var t;I.value||(t=E["inputValue"],f("prefix-click",{value:t},e))},_=()=>new Promise(e=>{E.visiblePanel=!1,a.hpTimeout=setTimeout(()=>{E.isAniVisible=!1,e()},350)}),z=(e,t)=>{l.value&&_(),m("",e),f("clear",{value:t},e)},Y=e=>{var t;I.value||(t=E["inputValue"],f("suffix-click",{value:t},e))},Z=e=>{var t=w.value,a=E["inputValue"];i.value||m(a,e),E.visiblePanel||(E.isActivated=!1,t&&t.checkValue(E.inputLabel)),f("blur",{value:a},e),o&&v&&o.triggerItemEvent(e,v.itemConfig.field,a)},W=e=>{r(e)},H=e=>{r(e)},J=e=>{var t=w.value;t&&t.confirmByEvent(e),_()},Q=e=>{var{multiple:t,autoClose:a}=k,{value:e,$event:l}=e,i=N.value;m(e,l),t||i||a&&_()},X=e=>{f("confirm",e,e.$event)},ee=e=>{var t=w.value,{visiblePanel:a,isActivated:l}=E,i=h.value,u=V.value;!I.value&&l&&(E.isActivated=(0,_dom.getEventTargetNode)(e,i).flag||(0,_dom.getEventTargetNode)(e,u).flag,E.isActivated||a&&(_(),t)&&t.checkValue(E.inputLabel))},te=e=>{var t,a=E["visiblePanel"];I.value||(t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),e=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),t&&(E.isActivated=!1),a&&(e||t)&&_())},ae=e=>{var t=E["visiblePanel"];I.value||t&&(t=V.value,((0,_dom.getEventTargetNode)(e,t).flag?s:_)())},le=()=>{var e=w.value,{isActivated:t,visiblePanel:a}=E;a&&_(),t&&(E.isActivated=!1),(a||t)&&(e&&e.checkValue(E.inputLabel),a=y.value)&&a.blur()},ie=()=>{var e=E["visiblePanel"];e&&s()},s=()=>{const a=k["placement"],l=E["panelIndex"],i=y.value,u=P.value,r=T.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,u,{placement:a,teleportTo:r}),t=Object.assign(e.style,{zIndex:l});E.panelStyle=t,E.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},ue=()=>{var e=E["visiblePanel"];return(I.value||e?(0,_vue.nextTick):(E.initialized||(E.initialized=!0),a.hpTimeout&&(clearTimeout(a.hpTimeout),a.hpTimeout=void 0),E.isActivated=!0,E.isAniVisible=!0,setTimeout(()=>{E.visiblePanel=!0},10),(e=k.zIndex)?E.panelIndex=e:E.panelIndex<(0,_utils.getLastZIndex)()&&(E.panelIndex=(0,_utils.nextZIndex)()),s))()},re=e=>{x.value||(e.preventDefault(),ue())},ne=e=>{r(e)},oe=({option:e,$event:t})=>{var a=k["type"],l=E["inputValue"],i=F.value,u=i["autoClose"],{code:r,clickMethod:n}=e,o=l,v={$datePicker:S,option:e,value:o,code:r};if(!n&&r){l=_ui.commands.get(r),e=l?l.datePickerCommandMethod:null;if(e)e(v);else{var s=c.value,d=p.value;switch(r){case"now":case"prev":case"next":case"minus":case"plus":o=(0,_util.getDateByCode)(r,o,a,{valueFormat:s,firstDay:d}).value;v.value=o,m(o,t);break;default:(0,_log.errLog)("vxe.error.notCommands",["[date-picker] "+r])}}}else{l=n||i.clickMethod;l&&l(v)}u&&_(),f("shortcut-click",v,t)},f=(e,t,a)=>{n(e,(0,_ui.createEvent)(a,{$datePicker:S},t))};t={dispatchEvent:f,setModelValue(e){E.inputValue=e,n("update:modelValue",e)},setModelValueByEvent(e,t){m(t||"",e)},focus(){var e=y.value;return E.isActivated=!0,e.focus(),(0,_vue.nextTick)()},blur(){return y.value.blur(),(E.isActivated=!1,_vue.nextTick)()},select(){return y.value.select(),(E.isActivated=!1,_vue.nextTick)()},showPanel:ue,hidePanel:_,updatePlacement:s};Object.assign(S,t);const M=(e,t)=>{var a=F.value,{position:l,align:i,mode:u}=a,r=B.value;return(0,_utils.isEnableConf)(a)&&r.length&&(l||"left")===e?(0,_vue.h)("div",{class:`vxe-date-picker--layout-${e}-wrapper`},[(0,_vue.h)(_buttonGroup.default,{options:r,mode:u,align:i,vertical:t,onClick:oe})]):(0,_ui.renderEmptyElement)(S)},ve=()=>(0,_vue.h)("div",{class:"vxe-date-picker--control-icon",onClick:re},[(0,_vue.h)("i",{class:["vxe-date-picker--date-picker-icon",(0,_ui.getIcon)().DATE_PICKER_DATE]})]);return(0,_vue.watch)(q,e=>{E.inputLabel=e}),(0,_vue.watch)(()=>k.modelValue,()=>{u()}),(0,_vue.nextTick)(()=>{_ui.globalEvents.on(S,"mousewheel",ae),_ui.globalEvents.on(S,"mousedown",ee),_ui.globalEvents.on(S,"keydown",te),_ui.globalEvents.on(S,"blur",le),_ui.globalEvents.on(S,"resize",ie)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(S,"mousewheel"),_ui.globalEvents.off(S,"mousedown"),_ui.globalEvents.off(S,"blur"),_ui.globalEvents.off(S,"resize")}),u(),(0,_vue.provide)("$xeDatePicker",S),S.renderVN=()=>{var e,t,a,l,i,u,r,{className:n,type:o,name:v,autoComplete:s}=k,{inputValue:d,inputLabel:c,visiblePanel:p,isActivated:m}=E,_=D.value,f=I.value,g=x.value,b=q.value;return g?(0,_vue.h)("div",{ref:h,class:["vxe-date-picker--readonly","type--"+o,n]},b):(g=j.value,b=U.value,e=A.value,a=k.prefixIcon,t=(t=C.prefix)||a?(0,_vue.h)("div",{class:"vxe-date-picker--prefix",onClick:G},[(0,_vue.h)("div",{class:"vxe-date-picker--prefix-icon"},t?(0,_vn.getSlotVNs)(t({})):[(0,_vue.h)("i",{class:a})])]):null,a=k.suffixIcon,l=E.inputValue,i=C.suffix,u=I.value,r=A.value,u=(0,_vue.h)("div",{class:["vxe-date-picker--suffix",{"is--clear":r&&!u&&!(""===l||_xeUtils.default.eqNull(l))}]},[r?(0,_vue.h)("div",{class:"vxe-date-picker--clear-icon",onClick:z},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]):(0,_ui.renderEmptyElement)(S),ve(),i||a?(0,_vue.h)("div",{class:"vxe-date-picker--suffix-icon",onClick:Y},i?(0,_vn.getSlotVNs)(i({})):[(0,_vue.h)("i",{class:a})]):(0,_ui.renderEmptyElement)(S)]),(0,_vue.h)("div",{ref:h,class:["vxe-date-picker","type--"+o,n,{["size--"+_]:_,"is--prefix":!!t,"is--suffix":!!u,"is--visible":p,"is--disabled":f,"is--active":m,"show--clear":e&&!f&&!(""===d||_xeUtils.default.eqNull(d))}],spellcheck:!1},[t||(0,_ui.renderEmptyElement)(S),(0,_vue.h)("div",{class:"vxe-date-picker--wrapper"},[(0,_vue.h)("input",{ref:y,class:"vxe-date-picker--inner",value:c,name:v,type:"text",placeholder:b,readonly:g,disabled:f,autocomplete:s,onKeydown:W,onKeyup:H,onClick:ne,onInput:O,onChange:R,onFocus:K,onBlur:Z})]),u||(0,_ui.renderEmptyElement)(S),(()=>{var{type:e,multiple:t,showClearButton:a,showConfirmButton:l}=k,{initialized:i,isAniVisible:u,visiblePanel:r,panelPlacement:n,panelStyle:o,inputValue:v}=E,s=D.value,d=T.value,c=F.value,p=A.value,m=N.value,_=B.value,c=c["position"],f=C.header,g=C.footer,b=C.top,h=C.bottom,y=C.left,x=C.right,_=0<_.length,m=null===l?m||t:l,t=null===a?p&&m&&"time"!==e:a;return(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!d||!i},[(0,_vue.h)("div",{ref:P,class:["vxe-table--ignore-clear vxe-date-picker--panel","type--"+e,{["size--"+s]:s,"is--transfer":d,"ani--leave":u,"ani--enter":r,"show--top":!!(b||f||_&&("top"===c||"header"===c)),"show--bottom":!!(h||g||_&&("bottom"===c||"footer"===c)),"show--left":!!(y||_&&"left"===c),"show--right":!!(x||_&&"right"===c)}],placement:n,style:o},i&&(r||u)?[(0,_vue.h)("div",{ref:V,class:["vxe-date-picker--layout-all-wrapper","type--"+e,{["size--"+s]:s}]},[b?(0,_vue.h)("div",{class:"vxe-date-picker--layout-top-wrapper"},b({})):M("top"),(0,_vue.h)("div",{class:"vxe-date-picker--layout-body-layout-wrapper"},[y?(0,_vue.h)("div",{class:"vxe-date-picker--layout-left-wrapper"},y({})):M("left",!0),(0,_vue.h)("div",{class:"vxe-date-picker--layout-body-content-wrapper"},[f?(0,_vue.h)("div",{class:"vxe-date-picker--layout-header-wrapper"},f({})):M("header"),(0,_vue.h)("div",{class:"vxe-date-picker--layout-body-wrapper"},[(0,_vue.h)(_datePanel.default,{ref:w,modelValue:E.inputValue,type:k.type,className:k.className,multiple:k.multiple,limitCount:k.limitCount,startDate:k.startDate,endDate:k.endDate,defaultDate:k.defaultDate,defaultTime:k.defaultTime,minDate:k.minDate,maxDate:k.maxDate,startDay:k.startDay,labelFormat:k.labelFormat,valueFormat:k.valueFormat,timeFormat:k.timeFormat,festivalMethod:k.festivalMethod,disabledMethod:k.disabledMethod,selectDay:k.selectDay,onChange:Q,onConfirm:X})]),(0,_vue.h)("div",{class:"vxe-date-picker--layout-footer-wrapper"},[(0,_vue.h)("div",{class:"vxe-date-picker--layout-footer-custom"},g?g({}):[M("footer")]),t||m?(0,_vue.h)("div",{class:"vxe-date-picker--layout-footer-btns"},[t?(0,_vue.h)(_button.default,{size:"mini",disabled:""===v||_xeUtils.default.eqNull(v),content:(0,_ui.getI18n)("vxe.button.clear"),onClick:z}):(0,_ui.renderEmptyElement)(S),m?(0,_vue.h)(_button.default,{size:"mini",status:"primary",content:(0,_ui.getI18n)("vxe.button.confirm"),onClick:J}):(0,_ui.renderEmptyElement)(S)]):(0,_ui.renderEmptyElement)(S)])]),x?(0,_vue.h)("div",{class:"vxe-date-picker--layout-right-wrapper"},x({})):M("right",!0)]),h?(0,_vue.h)("div",{class:"vxe-date-picker--layout-bottom-wrapper"},h({})):M("bottom")])]:[])])})()]))},S},render(){return this.renderVN()}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("../../date-panel/src/util"),_log=require("../../ui/src/log"),_datePanel=_interopRequireDefault(require("../../date-panel/src/date-panel")),_button=_interopRequireDefault(require("../../button/src/button")),_buttonGroup=_interopRequireDefault(require("../../button/src/button-group"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeDatePicker",props:{modelValue:[String,Number,Date],immediate:{type:Boolean,default:!0},name:String,type:{type:String,default:"date"},clearable:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.clearable},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},placeholder:String,autoComplete:{type:String,default:"off"},form:String,className:String,zIndex:Number,size:{type:String,default:()=>(0,_ui.getConfig)().datePicker.size||(0,_ui.getConfig)().size},multiple:Boolean,limitCount:{type:[String,Number],default:()=>(0,_ui.getConfig)().datePicker.limitCount},startDate:{type:[String,Number,Date],default:()=>(0,_ui.getConfig)().datePicker.startDate},endDate:{type:[String,Number,Date],default:()=>(0,_ui.getConfig)().datePicker.endDate},defaultDate:[String,Number,Date],defaultTime:[String,Number,Date],minDate:[String,Number,Date],maxDate:[String,Number,Date],startDay:{type:[String,Number],default:()=>(0,_ui.getConfig)().datePicker.startDay},labelFormat:String,valueFormat:String,timeFormat:String,editable:{type:Boolean,default:!0},festivalMethod:{type:Function,default:()=>(0,_ui.getConfig)().datePicker.festivalMethod},disabledMethod:{type:Function,default:()=>(0,_ui.getConfig)().datePicker.disabledMethod},selectDay:{type:[String,Number],default:()=>(0,_ui.getConfig)().datePicker.selectDay},showClearButton:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.showClearButton},showConfirmButton:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.showConfirmButton},autoClose:{type:Boolean,default:()=>(0,_ui.getConfig)().datePicker.autoClose},prefixIcon:String,suffixIcon:String,placement:String,transfer:{type:Boolean,default:null},popupConfig:Object,shortcutConfig:Object,startWeek:Number},emits:["update:modelValue","input","change","keydown","keyup","click","focus","blur","clear","confirm","prefix-click","suffix-click","date-prev","date-today","date-next","shortcut-click"],setup(C,e){const{slots:D,emit:n}=e,d=(0,_vue.inject)("$xeModal",null),g=(0,_vue.inject)("$xeDrawer",null),b=(0,_vue.inject)("$xeTable",null),o=(0,_vue.inject)("$xeForm",null),v=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const E=(0,_ui.useSize)(C)["computeSize"],P=(0,_vue.reactive)({initialized:!1,panelIndex:0,visiblePanel:!1,isAniVisible:!1,panelStyle:{},panelPlacement:"",isActivated:!1,inputValue:"",inputLabel:""}),a={hpTimeout:void 0},h=(0,_vue.ref)(),y=(0,_vue.ref)(),V=(0,_vue.ref)(),w=(0,_vue.ref)(),S=(0,_vue.ref)(),j={refElem:h,refInput:y},T={xID:t,props:C,context:e,reactData:P,internalData:a,getRefMaps:()=>j},I=(0,_vue.computed)(()=>{var e=C["transfer"],t=A.value;if(_xeUtils.default.isBoolean(t.transfer))return t.transfer;if(null===e){t=(0,_ui.getConfig)().datePicker.transfer;if(_xeUtils.default.isBoolean(t))return t;if(b||d||g||o)return!0}return e}),x=(0,_vue.computed)(()=>{var e=C["readonly"];return null===e?!!o&&o.props.readonly:e}),k=(0,_vue.computed)(()=>{var e=C["disabled"];return null===e?!!o&&o.props.disabled:e}),N=(0,_vue.computed)(()=>{var e=C["type"];return"time"===e||"datetime"===e}),l=(0,_vue.computed)(()=>{return N.value||-1<["date","week","month","quarter","year"].indexOf(C.type)}),F=(0,_vue.computed)(()=>C.clearable),U=(0,_vue.computed)(()=>{var{type:e,editable:t,multiple:a}=C;return x.value||a||!t||"week"===e||"quarter"===e}),L=(0,_vue.computed)(()=>{var e=C["placeholder"];return(e=e||(0,_ui.getConfig)().datePicker.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),i=(0,_vue.computed)(()=>{var e=C["immediate"];return e}),A=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().datePicker.popupConfig,C.popupConfig)),B=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().datePicker.shortcutConfig,C.shortcutConfig)),q=(0,_vue.computed)(()=>{var e=B.value["options"];return e?e.map((e,t)=>Object.assign({name:""+(e.name||e.code||t)},e)):[]}),$=(0,_vue.computed)(()=>{var e=C["labelFormat"];return e||(0,_ui.getI18n)("vxe.input.date.labelFormat."+C.type)}),c=(0,_vue.computed)(()=>{var{type:e,valueFormat:t}=C;return(0,_util.handleValueFormat)(e,t)}),p=(0,_vue.computed)(()=>{var e=C["startDay"];return _xeUtils.default.toNumber(e)}),z=(0,_vue.computed)(()=>{const{type:t,multiple:e}=C;var a=P["inputValue"];const l=$.value,i=c.value,u=p.value;return(a?e?a.split(","):[a]:[]).map(e=>{return(0,_util.parseDateObj)(e,t,{valueFormat:i,labelFormat:l,firstDay:u}).label}).join(", ")}),u=()=>{var e=C["modelValue"];let t="";e&&(t=_xeUtils.default.isNumber(e)&&/^[0-9]{11,15}$/.test(""+e)?new Date(e):e),P.inputValue=t},r=e=>{var t=P["inputValue"];_(e.type,{value:t},e)},m=(e,t)=>{var a,{type:l,modelValue:i,valueFormat:u}=C,r=c.value;P.inputValue=e,(0,_util.hasTimestampValueType)(u)?(a=(a=(0,_util.parseDateValue)(e,l,{valueFormat:r}))?a.getTime():null,n("update:modelValue",a),i!==a&&(_("change",{value:a},t),o)&&v&&o.triggerItemEvent(t,v.itemConfig.field,a)):(0,_util.hasDateValueType)(u)?(a=(0,_util.parseDateValue)(e,l,{valueFormat:r}),n("update:modelValue",a),(i&&a?_xeUtils.default.toStringDate(i).getTime()!==a.getTime():i!==a)&&(_("change",{value:a},t),o)&&v&&o.triggerItemEvent(t,v.itemConfig.field,a)):(n("update:modelValue",e),_xeUtils.default.toValueString(i)!==e&&(_("change",{value:e},t),o)&&v&&o.triggerItemEvent(t,v.itemConfig.field,e))},O=e=>{var t=e.target.value;P.inputLabel=t,_("input",{value:t},e)},R=e=>{i.value||r(e)},K=e=>{P.isActivated=!0,l.value&&ne(e),r(e)},G=e=>{var t;k.value||(t=P["inputValue"],_("prefix-click",{value:t},e))},f=()=>new Promise(e=>{P.visiblePanel=!1,a.hpTimeout=setTimeout(()=>{P.isAniVisible=!1,e()},350)}),Y=(e,t)=>{l.value&&f(),m("",e),_("clear",{value:t},e)},Z=e=>{var t;k.value||(t=P["inputValue"],_("suffix-click",{value:t},e))},W=e=>{var t=S.value,a=P["inputValue"];i.value||m(a,e),P.visiblePanel||(P.isActivated=!1,t&&t.checkValue(P.inputLabel)),_("blur",{value:a},e),o&&v&&o.triggerItemEvent(e,v.itemConfig.field,a)},H=e=>{r(e)},J=e=>{r(e)},Q=e=>{var t=S.value;t&&t.confirmByEvent(e),f()},X=e=>{var{multiple:t,autoClose:a}=C,{value:e,$event:l}=e,i=N.value;m(e,l),t||i||a&&f()},ee=e=>{_("confirm",e,e.$event)},te=e=>{var t=S.value,{visiblePanel:a,isActivated:l}=P,i=h.value,u=w.value;!k.value&&l&&(P.isActivated=(0,_dom.getEventTargetNode)(e,i).flag||(0,_dom.getEventTargetNode)(e,u).flag,P.isActivated||a&&(f(),t)&&t.checkValue(P.inputLabel))},ae=e=>{var t,a=P["visiblePanel"];k.value||(t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),e=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),t&&(P.isActivated=!1),a&&(e||t)&&f())},le=e=>{var t=P["visiblePanel"];k.value||t&&(t=w.value,((0,_dom.getEventTargetNode)(e,t).flag?s:f)())},ie=()=>{var e=S.value,{isActivated:t,visiblePanel:a}=P;a&&f(),t&&(P.isActivated=!1),(a||t)&&(e&&e.checkValue(P.inputLabel),a=y.value)&&a.blur()},ue=()=>{var e=P["visiblePanel"];e&&s()},s=()=>{const a=C["placement"],l=P["panelIndex"],i=y.value,u=V.value,r=I.value,n=A.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,u,{placement:n.placement||a,teleportTo:r}),t=Object.assign(e.style,{zIndex:l});P.panelStyle=t,P.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},re=()=>{var e=P["visiblePanel"];return(k.value||e?(0,_vue.nextTick):(P.initialized||(P.initialized=!0),a.hpTimeout&&(clearTimeout(a.hpTimeout),a.hpTimeout=void 0),P.isActivated=!0,P.isAniVisible=!0,setTimeout(()=>{P.visiblePanel=!0},10),(e=A.value.zIndex||C.zIndex)?P.panelIndex=_xeUtils.default.toNumber(e):P.panelIndex<(0,_utils.getLastZIndex)()&&(P.panelIndex=(0,_utils.nextZIndex)()),s))()},ne=e=>{x.value||(e.preventDefault(),re())},oe=e=>{r(e)},ve=({option:e,$event:t})=>{var a=C["type"],l=P["inputValue"],i=B.value,u=i["autoClose"],{code:r,clickMethod:n}=e,o=l,v={$datePicker:T,option:e,value:o,code:r};if(!n&&r){l=_ui.commands.get(r),e=l?l.datePickerCommandMethod:null;if(e)e(v);else{var s=c.value,d=p.value;switch(r){case"now":case"prev":case"next":case"minus":case"plus":o=(0,_util.getDateByCode)(r,o,a,{valueFormat:s,firstDay:d}).value;v.value=o,m(o,t);break;default:(0,_log.errLog)("vxe.error.notCommands",["[date-picker] "+r])}}}else{l=n||i.clickMethod;l&&l(v)}u&&f(),_("shortcut-click",v,t)},_=(e,t,a)=>{n(e,(0,_ui.createEvent)(a,{$datePicker:T},t))};t={dispatchEvent:_,setModelValue(e){P.inputValue=e,n("update:modelValue",e)},setModelValueByEvent(e,t){m(t||"",e)},focus(){var e=y.value;return P.isActivated=!0,e.focus(),(0,_vue.nextTick)()},blur(){return y.value.blur(),(P.isActivated=!1,_vue.nextTick)()},select(){return y.value.select(),(P.isActivated=!1,_vue.nextTick)()},showPanel:re,hidePanel:f,updatePlacement:s};Object.assign(T,t);const M=(e,t)=>{var a=B.value,{position:l,align:i,mode:u}=a,r=q.value;return(0,_utils.isEnableConf)(a)&&r.length&&(l||"left")===e?(0,_vue.h)("div",{class:`vxe-date-picker--layout-${e}-wrapper`},[(0,_vue.h)(_buttonGroup.default,{options:r,mode:u,align:i,vertical:t,onClick:ve})]):(0,_ui.renderEmptyElement)(T)},se=()=>(0,_vue.h)("div",{class:"vxe-date-picker--control-icon",onClick:ne},[(0,_vue.h)("i",{class:["vxe-date-picker--date-picker-icon",(0,_ui.getIcon)().DATE_PICKER_DATE]})]);return(0,_vue.watch)(z,e=>{P.inputLabel=e}),(0,_vue.watch)(()=>C.modelValue,()=>{u()}),(0,_vue.nextTick)(()=>{_ui.globalEvents.on(T,"mousewheel",le),_ui.globalEvents.on(T,"mousedown",te),_ui.globalEvents.on(T,"keydown",ae),_ui.globalEvents.on(T,"blur",ie),_ui.globalEvents.on(T,"resize",ue)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(T,"mousewheel"),_ui.globalEvents.off(T,"mousedown"),_ui.globalEvents.off(T,"blur"),_ui.globalEvents.off(T,"resize")}),u(),(0,_vue.provide)("$xeDatePicker",T),T.renderVN=()=>{var e,t,a,l,i,u,r,{className:n,type:o,name:v,autoComplete:s}=C,{inputValue:d,inputLabel:c,visiblePanel:p,isActivated:m}=P,f=E.value,_=k.value,g=x.value,b=z.value;return g?(0,_vue.h)("div",{ref:h,class:["vxe-date-picker--readonly","type--"+o,n]},b):(g=U.value,b=L.value,e=F.value,a=C.prefixIcon,t=(t=D.prefix)||a?(0,_vue.h)("div",{class:"vxe-date-picker--prefix",onClick:G},[(0,_vue.h)("div",{class:"vxe-date-picker--prefix-icon"},t?(0,_vn.getSlotVNs)(t({})):[(0,_vue.h)("i",{class:a})])]):null,a=C.suffixIcon,l=P.inputValue,i=D.suffix,u=k.value,r=F.value,u=(0,_vue.h)("div",{class:["vxe-date-picker--suffix",{"is--clear":r&&!u&&!(""===l||_xeUtils.default.eqNull(l))}]},[r?(0,_vue.h)("div",{class:"vxe-date-picker--clear-icon",onClick:Y},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]):(0,_ui.renderEmptyElement)(T),se(),i||a?(0,_vue.h)("div",{class:"vxe-date-picker--suffix-icon",onClick:Z},i?(0,_vn.getSlotVNs)(i({})):[(0,_vue.h)("i",{class:a})]):(0,_ui.renderEmptyElement)(T)]),(0,_vue.h)("div",{ref:h,class:["vxe-date-picker","type--"+o,n,{["size--"+f]:f,"is--prefix":!!t,"is--suffix":!!u,"is--visible":p,"is--disabled":_,"is--active":m,"show--clear":e&&!_&&!(""===d||_xeUtils.default.eqNull(d))}],spellcheck:!1},[t||(0,_ui.renderEmptyElement)(T),(0,_vue.h)("div",{class:"vxe-date-picker--wrapper"},[(0,_vue.h)("input",{ref:y,class:"vxe-date-picker--inner",value:c,name:v,type:"text",placeholder:b,readonly:g,disabled:_,autocomplete:s,onKeydown:H,onKeyup:J,onClick:oe,onInput:O,onChange:R,onFocus:K,onBlur:W})]),u||(0,_ui.renderEmptyElement)(T),(()=>{var{type:e,multiple:t,showClearButton:a,showConfirmButton:l}=C,{initialized:i,isAniVisible:u,visiblePanel:r,panelPlacement:n,panelStyle:o,inputValue:v}=P,s=E.value,d=I.value,c=B.value,p=F.value,m=N.value,f=q.value,_=A.value,c=c["position"],g=D.header,b=D.footer,h=D.top,y=D.bottom,x=D.left,k=D.right,_=_.className,f=0<f.length,m=null===l?m||t:l,t=null===a?p&&m&&"time"!==e:a;return(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!d||!i},[(0,_vue.h)("div",{ref:V,class:["vxe-table--ignore-clear vxe-date-picker--panel","type--"+e,_?_xeUtils.default.isFunction(_)?_({$datePicker:T}):_:"",{["size--"+s]:s,"is--transfer":d,"ani--leave":u,"ani--enter":r,"show--top":!!(h||g||f&&("top"===c||"header"===c)),"show--bottom":!!(y||b||f&&("bottom"===c||"footer"===c)),"show--left":!!(x||f&&"left"===c),"show--right":!!(k||f&&"right"===c)}],placement:n,style:o},i&&(r||u)?[(0,_vue.h)("div",{ref:w,class:["vxe-date-picker--layout-all-wrapper","type--"+e,{["size--"+s]:s}]},[h?(0,_vue.h)("div",{class:"vxe-date-picker--layout-top-wrapper"},h({})):M("top"),(0,_vue.h)("div",{class:"vxe-date-picker--layout-body-layout-wrapper"},[x?(0,_vue.h)("div",{class:"vxe-date-picker--layout-left-wrapper"},x({})):M("left",!0),(0,_vue.h)("div",{class:"vxe-date-picker--layout-body-content-wrapper"},[g?(0,_vue.h)("div",{class:"vxe-date-picker--layout-header-wrapper"},g({})):M("header"),(0,_vue.h)("div",{class:"vxe-date-picker--layout-body-wrapper"},[(0,_vue.h)(_datePanel.default,{ref:S,modelValue:P.inputValue,type:C.type,className:C.className,multiple:C.multiple,limitCount:C.limitCount,startDate:C.startDate,endDate:C.endDate,defaultDate:C.defaultDate,defaultTime:C.defaultTime,minDate:C.minDate,maxDate:C.maxDate,startDay:C.startDay,labelFormat:C.labelFormat,valueFormat:C.valueFormat,timeFormat:C.timeFormat,festivalMethod:C.festivalMethod,disabledMethod:C.disabledMethod,selectDay:C.selectDay,onChange:X,onConfirm:ee})]),(0,_vue.h)("div",{class:"vxe-date-picker--layout-footer-wrapper"},[(0,_vue.h)("div",{class:"vxe-date-picker--layout-footer-custom"},b?b({}):[M("footer")]),t||m?(0,_vue.h)("div",{class:"vxe-date-picker--layout-footer-btns"},[t?(0,_vue.h)(_button.default,{size:"mini",disabled:""===v||_xeUtils.default.eqNull(v),content:(0,_ui.getI18n)("vxe.button.clear"),onClick:Y}):(0,_ui.renderEmptyElement)(T),m?(0,_vue.h)(_button.default,{size:"mini",status:"primary",content:(0,_ui.getI18n)("vxe.button.confirm"),onClick:Q}):(0,_ui.renderEmptyElement)(T)]):(0,_ui.renderEmptyElement)(T)])]),k?(0,_vue.h)("div",{class:"vxe-date-picker--layout-right-wrapper"},k({})):M("right",!0)]),y?(0,_vue.h)("div",{class:"vxe-date-picker--layout-bottom-wrapper"},y({})):M("bottom")])]:[])])})()]))},T},render(){return this.renderVN()}});
@@ -116,6 +116,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
116
116
  type: Boolean,
117
117
  default: null
118
118
  },
119
+ popupConfig: Object,
119
120
  shortcutConfig: Object
120
121
  },
121
122
  emits: ['update:modelValue', 'update:startValue', 'update:endValue', 'input', 'change', 'keydown', 'keyup', 'click', 'focus', 'blur', 'clear', 'confirm', 'prefix-click', 'suffix-click', 'date-prev', 'date-today', 'date-next', 'shortcut-click'],
@@ -171,6 +172,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
171
172
  const {
172
173
  transfer
173
174
  } = props;
175
+ const popupOpts = computePopupOpts.value;
176
+ if (_xeUtils.default.isBoolean(popupOpts.transfer)) {
177
+ return popupOpts.transfer;
178
+ }
174
179
  if (transfer === null) {
175
180
  const globalTransfer = (0, _ui.getConfig)().dateRangePicker.transfer;
176
181
  if (_xeUtils.default.isBoolean(globalTransfer)) {
@@ -274,6 +279,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
274
279
  } = props;
275
280
  return immediate;
276
281
  });
282
+ const computePopupOpts = (0, _vue.computed)(() => {
283
+ return Object.assign({}, (0, _ui.getConfig)().dateRangePicker.popupConfig, props.popupConfig);
284
+ });
277
285
  const computeShortcutOpts = (0, _vue.computed)(() => {
278
286
  return Object.assign({}, (0, _ui.getConfig)().dateRangePicker.shortcutConfig, props.shortcutConfig);
279
287
  });
@@ -771,11 +779,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
771
779
  };
772
780
  // 弹出面板
773
781
  const updateZindex = () => {
774
- const {
775
- zIndex
776
- } = props;
777
- if (zIndex) {
778
- reactData.panelIndex = zIndex;
782
+ const popupOpts = computePopupOpts.value;
783
+ const customZIndex = popupOpts.zIndex || props.zIndex;
784
+ if (customZIndex) {
785
+ reactData.panelIndex = _xeUtils.default.toNumber(customZIndex);
779
786
  } else if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
780
787
  reactData.panelIndex = (0, _utils.nextZIndex)();
781
788
  }
@@ -790,9 +797,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
790
797
  const targetElem = refInputTarget.value;
791
798
  const panelElem = refInputPanel.value;
792
799
  const btnTransfer = computeBtnTransfer.value;
800
+ const popupOpts = computePopupOpts.value;
793
801
  const handleStyle = () => {
794
802
  const ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
795
- placement,
803
+ placement: popupOpts.placement || placement,
796
804
  teleportTo: btnTransfer
797
805
  });
798
806
  const panelStyle = Object.assign(ppObj.style, {
@@ -996,6 +1004,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
996
1004
  const isDateTimeType = computeIsDateTimeType.value;
997
1005
  const defaultDates = computeDefaultDates.value;
998
1006
  const defaultTimes = computeDefaultTimes.value;
1007
+ const popupOpts = computePopupOpts.value;
999
1008
  const {
1000
1009
  startLabel,
1001
1010
  endLabel
@@ -1009,6 +1018,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1009
1018
  const bottomSlot = slots.bottom;
1010
1019
  const leftSlot = slots.left;
1011
1020
  const rightSlot = slots.right;
1021
+ const ppClassName = popupOpts.className;
1012
1022
  const [sdDate, edDate] = defaultDates;
1013
1023
  const [sdTime, edTime] = defaultTimes;
1014
1024
  const hasShortcutBtn = shortcutList.length > 0;
@@ -1019,7 +1029,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1019
1029
  disabled: btnTransfer ? !initialized : true
1020
1030
  }, [(0, _vue.h)('div', {
1021
1031
  ref: refInputPanel,
1022
- class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, {
1032
+ class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, ppClassName ? _xeUtils.default.isFunction(ppClassName) ? ppClassName({
1033
+ $dateRangePicker: $xeDateRangePicker
1034
+ }) : ppClassName : '', {
1023
1035
  [`size--${vSize}`]: vSize,
1024
1036
  'is--transfer': btnTransfer,
1025
1037
  'ani--leave': isAniVisible,