vxe-pc-ui 4.12.0 → 4.12.2

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 (169) hide show
  1. package/es/calendar/src/calendar.js +254 -97
  2. package/es/calendar/style.css +248 -69
  3. package/es/calendar/style.min.css +1 -1
  4. package/es/date-panel/src/date-panel.js +3 -1
  5. package/es/icon/style.css +1 -1
  6. package/es/language/ar-EG.js +4 -0
  7. package/es/language/de-DE.js +4 -0
  8. package/es/language/en-US.js +4 -0
  9. package/es/language/es-ES.js +4 -0
  10. package/es/language/fr-FR.js +4 -0
  11. package/es/language/hu-HU.js +4 -0
  12. package/es/language/hy-AM.js +4 -0
  13. package/es/language/id-ID.js +4 -0
  14. package/es/language/it-IT.js +4 -0
  15. package/es/language/ja-JP.js +4 -0
  16. package/es/language/ko-KR.js +4 -0
  17. package/es/language/ms-MY.js +4 -0
  18. package/es/language/nb-NO.js +4 -0
  19. package/es/language/pt-BR.js +4 -0
  20. package/es/language/ru-RU.js +4 -0
  21. package/es/language/th-TH.js +4 -0
  22. package/es/language/ug-CN.js +4 -0
  23. package/es/language/uk-UA.js +4 -0
  24. package/es/language/uz-UZ.js +4 -0
  25. package/es/language/vi-VN.js +4 -0
  26. package/es/language/zh-CHT.js +4 -0
  27. package/es/language/zh-CN.js +4 -0
  28. package/es/menu/src/menu.js +67 -8
  29. package/es/style.css +1 -1
  30. package/es/style.min.css +1 -1
  31. package/es/tree/src/tree.js +10 -2
  32. package/es/ui/index.js +1 -1
  33. package/es/ui/src/log.js +1 -1
  34. package/es/vxe-calendar/style.css +248 -69
  35. package/es/vxe-calendar/style.min.css +1 -1
  36. package/lib/calendar/src/calendar.js +283 -104
  37. package/lib/calendar/src/calendar.min.js +1 -1
  38. package/lib/calendar/style/style.css +248 -69
  39. package/lib/calendar/style/style.min.css +1 -1
  40. package/lib/date-panel/src/date-panel.js +3 -1
  41. package/lib/date-panel/src/date-panel.min.js +1 -1
  42. package/lib/icon/style/style.css +1 -1
  43. package/lib/icon/style/style.min.css +1 -1
  44. package/lib/index.umd.js +443 -161
  45. package/lib/index.umd.min.js +1 -1
  46. package/lib/language/ar-EG.js +4 -0
  47. package/lib/language/ar-EG.min.js +1 -1
  48. package/lib/language/ar-EG.umd.js +4 -0
  49. package/lib/language/de-DE.js +4 -0
  50. package/lib/language/de-DE.min.js +1 -1
  51. package/lib/language/de-DE.umd.js +4 -0
  52. package/lib/language/en-US.js +4 -0
  53. package/lib/language/en-US.min.js +1 -1
  54. package/lib/language/en-US.umd.js +4 -0
  55. package/lib/language/es-ES.js +4 -0
  56. package/lib/language/es-ES.min.js +1 -1
  57. package/lib/language/es-ES.umd.js +4 -0
  58. package/lib/language/fr-FR.js +4 -0
  59. package/lib/language/fr-FR.min.js +1 -1
  60. package/lib/language/fr-FR.umd.js +4 -0
  61. package/lib/language/hu-HU.js +4 -0
  62. package/lib/language/hu-HU.min.js +1 -1
  63. package/lib/language/hu-HU.umd.js +4 -0
  64. package/lib/language/hy-AM.js +4 -0
  65. package/lib/language/hy-AM.min.js +1 -1
  66. package/lib/language/hy-AM.umd.js +4 -0
  67. package/lib/language/id-ID.js +4 -0
  68. package/lib/language/id-ID.min.js +1 -1
  69. package/lib/language/id-ID.umd.js +4 -0
  70. package/lib/language/it-IT.js +4 -0
  71. package/lib/language/it-IT.min.js +1 -1
  72. package/lib/language/it-IT.umd.js +4 -0
  73. package/lib/language/ja-JP.js +4 -0
  74. package/lib/language/ja-JP.min.js +1 -1
  75. package/lib/language/ja-JP.umd.js +4 -0
  76. package/lib/language/ko-KR.js +4 -0
  77. package/lib/language/ko-KR.min.js +1 -1
  78. package/lib/language/ko-KR.umd.js +4 -0
  79. package/lib/language/ms-MY.js +4 -0
  80. package/lib/language/ms-MY.min.js +1 -1
  81. package/lib/language/ms-MY.umd.js +4 -0
  82. package/lib/language/nb-NO.js +4 -0
  83. package/lib/language/nb-NO.min.js +1 -1
  84. package/lib/language/nb-NO.umd.js +4 -0
  85. package/lib/language/pt-BR.js +4 -0
  86. package/lib/language/pt-BR.min.js +1 -1
  87. package/lib/language/pt-BR.umd.js +4 -0
  88. package/lib/language/ru-RU.js +4 -0
  89. package/lib/language/ru-RU.min.js +1 -1
  90. package/lib/language/ru-RU.umd.js +4 -0
  91. package/lib/language/th-TH.js +4 -0
  92. package/lib/language/th-TH.min.js +1 -1
  93. package/lib/language/th-TH.umd.js +4 -0
  94. package/lib/language/ug-CN.js +4 -0
  95. package/lib/language/ug-CN.min.js +1 -1
  96. package/lib/language/ug-CN.umd.js +4 -0
  97. package/lib/language/uk-UA.js +4 -0
  98. package/lib/language/uk-UA.min.js +1 -1
  99. package/lib/language/uk-UA.umd.js +4 -0
  100. package/lib/language/uz-UZ.js +4 -0
  101. package/lib/language/uz-UZ.min.js +1 -1
  102. package/lib/language/uz-UZ.umd.js +4 -0
  103. package/lib/language/vi-VN.js +4 -0
  104. package/lib/language/vi-VN.min.js +1 -1
  105. package/lib/language/vi-VN.umd.js +4 -0
  106. package/lib/language/zh-CHT.js +4 -0
  107. package/lib/language/zh-CHT.min.js +1 -1
  108. package/lib/language/zh-CHT.umd.js +4 -0
  109. package/lib/language/zh-CN.js +4 -0
  110. package/lib/language/zh-CN.min.js +1 -1
  111. package/lib/language/zh-CN.umd.js +4 -0
  112. package/lib/menu/src/menu.js +89 -10
  113. package/lib/menu/src/menu.min.js +1 -1
  114. package/lib/style.css +1 -1
  115. package/lib/style.min.css +1 -1
  116. package/lib/tree/src/tree.js +62 -44
  117. package/lib/tree/src/tree.min.js +1 -1
  118. package/lib/ui/index.js +1 -1
  119. package/lib/ui/index.min.js +1 -1
  120. package/lib/ui/src/log.js +1 -1
  121. package/lib/ui/src/log.min.js +1 -1
  122. package/lib/vxe-calendar/style/style.css +248 -69
  123. package/lib/vxe-calendar/style/style.min.css +1 -1
  124. package/package.json +1 -1
  125. package/packages/calendar/src/calendar.ts +259 -97
  126. package/packages/date-panel/src/date-panel.ts +3 -1
  127. package/packages/language/ar-EG.ts +4 -0
  128. package/packages/language/de-DE.ts +4 -0
  129. package/packages/language/en-US.ts +4 -0
  130. package/packages/language/es-ES.ts +4 -0
  131. package/packages/language/fr-FR.ts +4 -0
  132. package/packages/language/hu-HU.ts +4 -0
  133. package/packages/language/hy-AM.ts +4 -0
  134. package/packages/language/id-ID.ts +4 -0
  135. package/packages/language/it-IT.ts +4 -0
  136. package/packages/language/ja-JP.ts +4 -0
  137. package/packages/language/ko-KR.ts +4 -0
  138. package/packages/language/ms-MY.ts +4 -0
  139. package/packages/language/nb-NO.ts +4 -0
  140. package/packages/language/pt-BR.ts +4 -0
  141. package/packages/language/ru-RU.ts +4 -0
  142. package/packages/language/th-TH.ts +4 -0
  143. package/packages/language/ug-CN.ts +4 -0
  144. package/packages/language/uk-UA.ts +4 -0
  145. package/packages/language/uz-UZ.ts +4 -0
  146. package/packages/language/vi-VN.ts +4 -0
  147. package/packages/language/zh-CHT.ts +4 -0
  148. package/packages/language/zh-CN.ts +4 -0
  149. package/packages/menu/src/menu.ts +79 -15
  150. package/packages/tree/src/tree.ts +11 -2
  151. package/styles/components/calendar.scss +281 -78
  152. package/types/components/calendar.d.ts +47 -3
  153. package/types/components/form-design.d.ts +106 -21
  154. package/types/components/menu.d.ts +50 -2
  155. package/types/handles/form-design.d.ts +5 -1
  156. package/types/ui/menus.d.ts +54 -5
  157. package/types/ui/renderer.d.ts +2 -1
  158. /package/es/icon/{iconfont.1768384392686.ttf → iconfont.1768473788689.ttf} +0 -0
  159. /package/es/icon/{iconfont.1768384392686.woff → iconfont.1768473788689.woff} +0 -0
  160. /package/es/icon/{iconfont.1768384392686.woff2 → iconfont.1768473788689.woff2} +0 -0
  161. /package/es/{iconfont.1768384392686.ttf → iconfont.1768473788689.ttf} +0 -0
  162. /package/es/{iconfont.1768384392686.woff → iconfont.1768473788689.woff} +0 -0
  163. /package/es/{iconfont.1768384392686.woff2 → iconfont.1768473788689.woff2} +0 -0
  164. /package/lib/icon/style/{iconfont.1768384392686.ttf → iconfont.1768473788689.ttf} +0 -0
  165. /package/lib/icon/style/{iconfont.1768384392686.woff → iconfont.1768473788689.woff} +0 -0
  166. /package/lib/icon/style/{iconfont.1768384392686.woff2 → iconfont.1768473788689.woff2} +0 -0
  167. /package/lib/{iconfont.1768384392686.ttf → iconfont.1768473788689.ttf} +0 -0
  168. /package/lib/{iconfont.1768384392686.woff → iconfont.1768473788689.woff} +0 -0
  169. /package/lib/{iconfont.1768384392686.woff2 → iconfont.1768473788689.woff2} +0 -0
@@ -9,9 +9,16 @@ var _comp = require("../../ui/src/comp");
9
9
  var _ui = require("../../ui");
10
10
  var _util = require("../../date-panel/src/util");
11
11
  var _dom = require("../../ui/src/dom");
12
+ var _utils = require("../../ui/src/utils");
13
+ var _log = require("../../ui/src/log");
12
14
  var _button = _interopRequireDefault(require("../../button/src/button"));
13
15
  var _xeUtils = _interopRequireDefault(require("xe-utils"));
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ const {
18
+ menus,
19
+ getConfig,
20
+ getI18n
21
+ } = _ui.VxeUI;
15
22
  var _default = exports.default = (0, _comp.defineVxeComponent)({
16
23
  name: 'VxeCalendar',
17
24
  props: {
@@ -23,7 +30,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
23
30
  className: String,
24
31
  size: {
25
32
  type: String,
26
- default: () => (0, _ui.getConfig)().calendar.size || (0, _ui.getConfig)().size
33
+ default: () => getConfig().calendar.size || getConfig().size
27
34
  },
28
35
  multiple: Boolean,
29
36
  width: [String, Number],
@@ -31,34 +38,35 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
31
38
  // date、week、month、quarter、year
32
39
  minDate: {
33
40
  type: [String, Number, Date],
34
- default: () => (0, _ui.getConfig)().calendar.minDate
41
+ default: () => getConfig().calendar.minDate
35
42
  },
36
43
  maxDate: {
37
44
  type: [String, Number, Date],
38
- default: () => (0, _ui.getConfig)().calendar.maxDate
45
+ default: () => getConfig().calendar.maxDate
39
46
  },
40
47
  startDay: {
41
48
  type: [String, Number],
42
- default: () => (0, _ui.getConfig)().calendar.startDay
49
+ default: () => getConfig().calendar.startDay
43
50
  },
44
51
  labelFormat: String,
45
52
  valueFormat: String,
46
53
  festivalMethod: {
47
54
  type: Function,
48
- default: () => (0, _ui.getConfig)().calendar.festivalMethod
55
+ default: () => getConfig().calendar.festivalMethod
49
56
  },
50
57
  disabledMethod: {
51
58
  type: Function,
52
- default: () => (0, _ui.getConfig)().calendar.disabledMethod
59
+ default: () => getConfig().calendar.disabledMethod
53
60
  },
54
- cellStyle: Function,
61
+ cellStyle: [Object, Function],
62
+ menuConfig: Object,
55
63
  // week
56
64
  selectDay: {
57
65
  type: [String, Number],
58
- default: () => (0, _ui.getConfig)().calendar.selectDay
66
+ default: () => getConfig().calendar.selectDay
59
67
  }
60
68
  },
61
- emits: ['update:modelValue', 'change', 'click', 'date-prev', 'date-today', 'date-next', 'view-change'],
69
+ emits: ['update:modelValue', 'change', 'cell-click', 'date-prev', 'date-today', 'date-next', 'view-change', 'cell-menu', 'menu-click'],
62
70
  setup(props, context) {
63
71
  const {
64
72
  emit
@@ -122,6 +130,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
122
130
  const computeSupportMultiples = (0, _vue.computed)(() => {
123
131
  return ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
124
132
  });
133
+ const computeMenuOpts = (0, _vue.computed)(() => {
134
+ return Object.assign({}, getConfig().calendar.menuConfig, props.menuConfig);
135
+ });
125
136
  const computeDateListValue = (0, _vue.computed)(() => {
126
137
  const {
127
138
  multiple
@@ -207,7 +218,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
207
218
  const isCalendarType = computeIsCalendarType.value;
208
219
  const dateValueFormat = computeDateValueFormat.value;
209
220
  if (isCalendarType) {
210
- return labelFormat || dateValueFormat || (0, _ui.getI18n)(`vxe.input.date.labelFormat.${props.type}`);
221
+ return labelFormat || dateValueFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`);
211
222
  }
212
223
  return null;
213
224
  });
@@ -261,11 +272,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
261
272
  y = yearList.length ? `${yearList[0].year} - ${yearList[yearList.length - 1].year}` : '';
262
273
  } else {
263
274
  y = `${year}`;
264
- m = month ? (0, _ui.getI18n)(`vxe.input.date.m${month}`) : '-';
275
+ m = month ? getI18n('vxe.calendar.monthLabel', [month]) : '-';
265
276
  }
266
277
  }
267
278
  return {
268
- y,
279
+ y: getI18n('vxe.calendar.yearLabel', [y]),
269
280
  m
270
281
  };
271
282
  });
@@ -299,7 +310,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
299
310
  return weekDatas.map(day => {
300
311
  return {
301
312
  value: day,
302
- label: (0, _ui.getI18n)(`vxe.input.date.weeks.w${day}`)
313
+ label: getI18n(`vxe.input.date.weeks.w${day}`)
303
314
  };
304
315
  });
305
316
  }
@@ -310,7 +321,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
310
321
  if (isCalendarType) {
311
322
  const dateHeaders = computeDateHeaders.value;
312
323
  return [{
313
- label: (0, _ui.getI18n)('vxe.input.date.weeks.w')
324
+ label: getI18n('vxe.input.date.weeks.w')
314
325
  }].concat(dateHeaders);
315
326
  }
316
327
  return [];
@@ -753,11 +764,85 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
753
764
  }
754
765
  }
755
766
  };
756
- const dateSelectEvent = item => {
767
+ const dateClickEvent = (evnt, item) => {
768
+ const {
769
+ type
770
+ } = props;
771
+ const {
772
+ datePanelType
773
+ } = reactData;
774
+ const {
775
+ date
776
+ } = item;
757
777
  if (!isDateDisabled(item)) {
758
- dateSelectItem(item.date);
778
+ dateSelectItem(date);
779
+ dispatchEvent('cell-click', {
780
+ date,
781
+ type,
782
+ viewType: datePanelType
783
+ }, evnt);
759
784
  }
760
785
  };
786
+ const datContextmenuEvent = (evnt, item) => {
787
+ const {
788
+ type
789
+ } = props;
790
+ const {
791
+ datePanelType
792
+ } = reactData;
793
+ const {
794
+ menuConfig
795
+ } = props;
796
+ const menuOpts = computeMenuOpts.value;
797
+ if (menuConfig ? (0, _utils.isEnableConf)(menuOpts) : menuOpts.enabled) {
798
+ const {
799
+ options,
800
+ visibleMethod
801
+ } = menuOpts;
802
+ const {
803
+ date
804
+ } = item;
805
+ if (!visibleMethod || visibleMethod({
806
+ $calendar: $xeCalendar,
807
+ options,
808
+ date,
809
+ type,
810
+ viewType: datePanelType
811
+ })) {
812
+ if (_ui.VxeUI.contextMenu) {
813
+ _ui.VxeUI.contextMenu.openByEvent(evnt, {
814
+ options,
815
+ events: {
816
+ optionClick(eventParams) {
817
+ const {
818
+ option
819
+ } = eventParams;
820
+ const gMenuOpts = menus.get(option.code);
821
+ const cmMethod = gMenuOpts ? gMenuOpts.calendarMenuMethod : null;
822
+ const params = {
823
+ menu: option,
824
+ date,
825
+ type,
826
+ viewType: datePanelType,
827
+ $event: evnt,
828
+ $calendar: $xeCalendar
829
+ };
830
+ if (cmMethod) {
831
+ cmMethod(params, evnt);
832
+ }
833
+ dispatchEvent('menu-click', params, eventParams.$event);
834
+ }
835
+ }
836
+ });
837
+ }
838
+ }
839
+ }
840
+ dispatchEvent('cell-menu', {
841
+ date: item.date,
842
+ type,
843
+ viewType: datePanelType
844
+ }, evnt);
845
+ };
761
846
  const dateMoveDay = offsetDay => {
762
847
  if (!isDateDisabled({
763
848
  date: offsetDay
@@ -818,6 +903,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
818
903
  }
819
904
  }
820
905
  };
906
+ const dateMouseleaveEvent = () => {
907
+ reactData.datePanelValue = null;
908
+ };
821
909
  const dateConfirmEvent = () => {};
822
910
  const dateOpenPanel = () => {
823
911
  const {
@@ -858,11 +946,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
858
946
  label: festivalItem.extra
859
947
  } : festivalItem.extra : null;
860
948
  const labels = [(0, _vue.h)('span', {
861
- class: ['vxe-calendar--date-label', {
949
+ class: ['vxe-calendar--label', {
862
950
  'is-notice': festivalItem.notice
863
951
  }]
864
- }, extraItem && extraItem.label ? [(0, _vue.h)('span', `${label || ''}`), (0, _vue.h)('span', {
865
- class: ['vxe-calendar--date-label--extra', extraItem.important ? 'is-important' : '', extraItem.className],
952
+ }, extraItem && extraItem.label ? [(0, _vue.h)('span', {
953
+ class: 'vxe-calendar--label--number'
954
+ }, `${label || ''}`), (0, _vue.h)('span', {
955
+ class: ['vxe-calendar--label--extra', extraItem.important ? 'is-important' : '', extraItem.className],
866
956
  style: extraItem.style
867
957
  }, _xeUtils.default.toValueString(extraItem.label))] : [`${label || ''}`])];
868
958
  const festivalLabel = festivalItem.label;
@@ -870,12 +960,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
870
960
  // 默认最多支持3个节日重叠
871
961
  const festivalLabels = _xeUtils.default.toValueString(festivalLabel).split(',');
872
962
  labels.push((0, _vue.h)('span', {
873
- class: ['vxe-calendar--date-festival', festivalItem.important ? 'is-important' : '', festivalItem.className],
963
+ class: ['vxe-calendar--festival', festivalItem.important ? 'is-important' : '', festivalItem.className],
874
964
  style: festivalItem.style
875
965
  }, [festivalLabels.length > 1 ? (0, _vue.h)('span', {
876
- class: ['vxe-calendar--date-festival--overlap', `overlap--${festivalLabels.length}`]
966
+ class: ['vxe-calendar--festival--overlap', `overlap--${festivalLabels.length}`]
877
967
  }, festivalLabels.map(label => (0, _vue.h)('span', label.substring(0, 3)))) : (0, _vue.h)('span', {
878
- class: 'vxe-calendar--date-festival--label'
968
+ class: 'vxe-calendar--festival--label'
879
969
  }, festivalLabels[0].substring(0, 3))]));
880
970
  }
881
971
  return labels;
@@ -896,25 +986,44 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
896
986
  const dayDatas = computeDayDatas.value;
897
987
  const dateListValue = computeDateListValue.value;
898
988
  const matchFormat = 'yyyyMMdd';
899
- return [(0, _vue.h)('table', {
900
- class: `vxe-calendar--date-${datePanelType}-view`,
901
- cellspacing: 0,
902
- cellpadding: 0,
903
- border: 0
904
- }, [(0, _vue.h)('tr', dateHeaders.map(item => {
905
- return (0, _vue.h)('th', {
906
- class: 'vxe-calendar--view-th'
907
- }, item.label);
908
- })), ...dayDatas.map(rows => {
909
- return (0, _vue.h)('tr', rows.map(item => {
910
- return (0, _vue.h)('td', {
911
- class: ['vxe-calendar--view-td', {
989
+ return [(0, _vue.h)('div', {
990
+ class: ['vxe-calendar--view-wrapper', `type--${datePanelType}`]
991
+ }, [(0, _vue.h)('div', {
992
+ class: 'vxe-calendar--view-header',
993
+ style: {
994
+ height: `${100 / (dayDatas.length + 1)}%`
995
+ }
996
+ }, [(0, _vue.h)('div', {
997
+ class: 'vxe-calendar--view-row'
998
+ }, dateHeaders.map(item => {
999
+ return (0, _vue.h)('div', {
1000
+ class: 'vxe-calendar--view-item',
1001
+ style: {
1002
+ width: `${100 / dateHeaders.length}%`
1003
+ }
1004
+ }, [(0, _vue.h)('div', {
1005
+ class: 'vxe-calendar--view-item-inner'
1006
+ }, [(0, _vue.h)('div', {
1007
+ class: 'vxe-calendar--view-item-label'
1008
+ }, item.label)])]);
1009
+ }))]), (0, _vue.h)('div', {
1010
+ class: 'vxe-calendar--view-body'
1011
+ }, dayDatas.map(rows => {
1012
+ return (0, _vue.h)('div', {
1013
+ class: 'vxe-calendar--view-row',
1014
+ style: {
1015
+ height: `${100 / dayDatas.length}%`
1016
+ }
1017
+ }, rows.map(item => {
1018
+ const isSelected = multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat);
1019
+ return (0, _vue.h)('div', {
1020
+ class: ['vxe-calendar--view-item', {
912
1021
  'is--prev': item.isPrev,
913
1022
  'is--current': item.isCurrent,
914
1023
  'is--now': item.isNow,
915
1024
  'is--next': item.isNext,
916
1025
  'is--disabled': isDateDisabled(item),
917
- 'is--selected': multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat),
1026
+ 'is--selected': isSelected,
918
1027
  'is--hover': _xeUtils.default.isDateSame(datePanelValue, item.date, matchFormat)
919
1028
  }],
920
1029
  style: Object.assign({}, _xeUtils.default.isFunction(cellStyle) ? cellStyle({
@@ -922,12 +1031,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
922
1031
  viewType: datePanelType,
923
1032
  date: item.date,
924
1033
  $calendar: $xeCalendar
925
- }) : cellStyle),
926
- onClick: () => dateSelectEvent(item),
927
- onMouseenter: () => dateMouseenterEvent(item)
928
- }, renderDateLabel(item, item.label));
1034
+ }) : cellStyle, {
1035
+ width: `${100 / rows.length}%`
1036
+ }),
1037
+ onClick: evnt => dateClickEvent(evnt, item),
1038
+ onContextmenu: evnt => datContextmenuEvent(evnt, item),
1039
+ onMouseenter: () => dateMouseenterEvent(item),
1040
+ onMouseleave: dateMouseleaveEvent
1041
+ }, [(0, _vue.h)('div', {
1042
+ class: 'vxe-calendar--view-item-inner'
1043
+ }, renderDateLabel(item, item.label))]);
929
1044
  }));
930
- })])];
1045
+ }))])];
931
1046
  };
932
1047
  const renderDateWeekTable = () => {
933
1048
  const {
@@ -943,24 +1058,43 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
943
1058
  const weekDates = computeWeekDates.value;
944
1059
  const dateListValue = computeDateListValue.value;
945
1060
  const matchFormat = 'yyyyMMdd';
946
- return [(0, _vue.h)('table', {
947
- class: `vxe-calendar--date-${datePanelType}-view`,
948
- cellspacing: 0,
949
- cellpadding: 0,
950
- border: 0
951
- }, [(0, _vue.h)('tr', weekHeaders.map(item => {
952
- return (0, _vue.h)('td', {
953
- class: 'vxe-calendar--view-th'
954
- }, item.label);
955
- })), ...weekDates.map(rows => {
1061
+ return [(0, _vue.h)('div', {
1062
+ class: ['vxe-calendar--view-wrapper', `type--${datePanelType}`]
1063
+ }, [(0, _vue.h)('div', {
1064
+ class: 'vxe-calendar--view-header',
1065
+ style: {
1066
+ height: `${100 / (weekDates.length + 1)}%`
1067
+ }
1068
+ }, [(0, _vue.h)('div', {
1069
+ class: 'vxe-calendar--view-row'
1070
+ }, weekHeaders.map((item, rIndex) => {
1071
+ return (0, _vue.h)('div', {
1072
+ class: 'vxe-calendar--view-item',
1073
+ style: {
1074
+ width: `${rIndex ? 13 : 9}%`
1075
+ }
1076
+ }, [(0, _vue.h)('div', {
1077
+ class: 'vxe-calendar--view-item-inner'
1078
+ }, [(0, _vue.h)('div', {
1079
+ class: 'vxe-calendar--view-item-label'
1080
+ }, item.label)])]);
1081
+ }))]), (0, _vue.h)('div', {
1082
+ class: 'vxe-calendar--view-body'
1083
+ }, weekDates.map(rows => {
956
1084
  const isSelected = multiple ? rows.some(item => dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat))) : rows.some(item => _xeUtils.default.isDateSame(dateValue, item.date, matchFormat));
957
1085
  const isHover = rows.some(item => _xeUtils.default.isDateSame(datePanelValue, item.date, matchFormat));
958
- return (0, _vue.h)('tr', rows.map(item => {
959
- return (0, _vue.h)('td', {
960
- class: ['vxe-calendar--view-td', {
1086
+ const isNowWeek = rows.some(item => item.isNow);
1087
+ return (0, _vue.h)('div', {
1088
+ class: 'vxe-calendar--view-row',
1089
+ style: {
1090
+ height: `${100 / weekDates.length}%`
1091
+ }
1092
+ }, rows.map((item, rIndex) => {
1093
+ return (0, _vue.h)('div', {
1094
+ class: ['vxe-calendar--view-item', {
961
1095
  'is--prev': item.isPrev,
962
1096
  'is--current': item.isCurrent,
963
- 'is--now': item.isNow,
1097
+ 'is--now': rIndex ? item.isNow : isNowWeek,
964
1098
  'is--next': item.isNext,
965
1099
  'is--disabled': isDateDisabled(item),
966
1100
  'is--selected': isSelected,
@@ -971,13 +1105,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
971
1105
  viewType: datePanelType,
972
1106
  date: item.date,
973
1107
  $calendar: $xeCalendar
974
- }) : cellStyle),
975
- // event
976
- onClick: () => dateSelectEvent(item),
977
- onMouseenter: () => dateMouseenterEvent(item)
978
- }, renderDateLabel(item, item.label));
1108
+ }) : cellStyle, {
1109
+ width: `${rIndex ? 13 : 9}%`
1110
+ }),
1111
+ onClick: evnt => dateClickEvent(evnt, item),
1112
+ onContextmenu: evnt => datContextmenuEvent(evnt, item),
1113
+ onMouseenter: () => dateMouseenterEvent(item),
1114
+ onMouseleave: dateMouseleaveEvent
1115
+ }, [(0, _vue.h)('div', {
1116
+ class: 'vxe-calendar--view-item-inner'
1117
+ }, renderDateLabel(item, item.label))]);
979
1118
  }));
980
- })])];
1119
+ }))])];
981
1120
  };
982
1121
  const renderDateMonthTable = () => {
983
1122
  const {
@@ -992,21 +1131,26 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
992
1131
  const monthDatas = computeMonthDatas.value;
993
1132
  const dateListValue = computeDateListValue.value;
994
1133
  const matchFormat = 'yyyyMM';
995
- return [(0, _vue.h)('table', {
996
- class: `vxe-calendar--date-${datePanelType}-view`,
997
- cellspacing: 0,
998
- cellpadding: 0,
999
- border: 0
1000
- }, [(0, _vue.h)('tbody', monthDatas.map(rows => {
1001
- return (0, _vue.h)('tr', rows.map(item => {
1002
- return (0, _vue.h)('td', {
1003
- class: ['vxe-calendar--view-td', {
1134
+ return [(0, _vue.h)('div', {
1135
+ class: ['vxe-calendar--view-wrapper', `type--${datePanelType}`]
1136
+ }, [(0, _vue.h)('div', {
1137
+ class: 'vxe-calendar--view-body'
1138
+ }, monthDatas.map(rows => {
1139
+ return (0, _vue.h)('div', {
1140
+ class: 'vxe-calendar--view-row',
1141
+ style: {
1142
+ height: `${100 / monthDatas.length}%`
1143
+ }
1144
+ }, rows.map(item => {
1145
+ const isSelected = multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat);
1146
+ return (0, _vue.h)('div', {
1147
+ class: ['vxe-calendar--view-item', {
1004
1148
  'is--prev': item.isPrev,
1005
1149
  'is--current': item.isCurrent,
1006
1150
  'is--now': item.isNow,
1007
1151
  'is--next': item.isNext,
1008
1152
  'is--disabled': isDateDisabled(item),
1009
- 'is--selected': multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat),
1153
+ 'is--selected': isSelected,
1010
1154
  'is--hover': _xeUtils.default.isDateSame(datePanelValue, item.date, matchFormat)
1011
1155
  }],
1012
1156
  style: Object.assign({}, _xeUtils.default.isFunction(cellStyle) ? cellStyle({
@@ -1014,10 +1158,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1014
1158
  viewType: datePanelType,
1015
1159
  date: item.date,
1016
1160
  $calendar: $xeCalendar
1017
- }) : cellStyle),
1018
- onClick: () => dateSelectEvent(item),
1019
- onMouseenter: () => dateMouseenterEvent(item)
1020
- }, renderDateLabel(item, (0, _ui.getI18n)(`vxe.input.date.months.m${item.month}`)));
1161
+ }) : cellStyle, {
1162
+ width: `${100 / rows.length}%`
1163
+ }),
1164
+ onClick: evnt => dateClickEvent(evnt, item),
1165
+ onContextmenu: evnt => datContextmenuEvent(evnt, item),
1166
+ onMouseenter: () => dateMouseenterEvent(item),
1167
+ onMouseleave: dateMouseleaveEvent
1168
+ }, [(0, _vue.h)('div', {
1169
+ class: 'vxe-calendar--view-item-inner'
1170
+ }, renderDateLabel(item, getI18n(`vxe.input.date.months.m${item.month}`)))]);
1021
1171
  }));
1022
1172
  }))])];
1023
1173
  };
@@ -1034,21 +1184,26 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1034
1184
  const quarterDatas = computeQuarterDatas.value;
1035
1185
  const dateListValue = computeDateListValue.value;
1036
1186
  const matchFormat = 'yyyyq';
1037
- return [(0, _vue.h)('table', {
1038
- class: `vxe-calendar--date-${datePanelType}-view`,
1039
- cellspacing: 0,
1040
- cellpadding: 0,
1041
- border: 0
1042
- }, [(0, _vue.h)('tbody', quarterDatas.map(rows => {
1043
- return (0, _vue.h)('tr', rows.map(item => {
1044
- return (0, _vue.h)('td', {
1045
- class: ['vxe-calendar--view-td', {
1187
+ return [(0, _vue.h)('div', {
1188
+ class: ['vxe-calendar--view-wrapper', `type--${datePanelType}`]
1189
+ }, [(0, _vue.h)('div', {
1190
+ class: 'vxe-calendar--view-body'
1191
+ }, quarterDatas.map(rows => {
1192
+ return (0, _vue.h)('div', {
1193
+ class: 'vxe-calendar--view-row',
1194
+ style: {
1195
+ height: `${100 / quarterDatas.length}%`
1196
+ }
1197
+ }, rows.map(item => {
1198
+ const isSelected = multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat);
1199
+ return (0, _vue.h)('div', {
1200
+ class: ['vxe-calendar--view-item', {
1046
1201
  'is--prev': item.isPrev,
1047
1202
  'is--current': item.isCurrent,
1048
1203
  'is--now': item.isNow,
1049
1204
  'is--next': item.isNext,
1050
1205
  'is--disabled': isDateDisabled(item),
1051
- 'is--selected': multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat),
1206
+ 'is--selected': isSelected,
1052
1207
  'is--hover': _xeUtils.default.isDateSame(datePanelValue, item.date, matchFormat)
1053
1208
  }],
1054
1209
  style: Object.assign({}, _xeUtils.default.isFunction(cellStyle) ? cellStyle({
@@ -1056,10 +1211,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1056
1211
  viewType: datePanelType,
1057
1212
  date: item.date,
1058
1213
  $calendar: $xeCalendar
1059
- }) : cellStyle),
1060
- onClick: () => dateSelectEvent(item),
1061
- onMouseenter: () => dateMouseenterEvent(item)
1062
- }, renderDateLabel(item, (0, _ui.getI18n)(`vxe.input.date.quarters.q${item.quarter}`)));
1214
+ }) : cellStyle, {
1215
+ width: `${100 / rows.length}%`
1216
+ }),
1217
+ onClick: evnt => dateClickEvent(evnt, item),
1218
+ onContextmenu: evnt => datContextmenuEvent(evnt, item),
1219
+ onMouseenter: () => dateMouseenterEvent(item),
1220
+ onMouseleave: dateMouseleaveEvent
1221
+ }, [(0, _vue.h)('div', {
1222
+ class: 'vxe-calendar--view-item-inner'
1223
+ }, renderDateLabel(item, getI18n(`vxe.input.date.quarters.q${item.quarter}`)))]);
1063
1224
  }));
1064
1225
  }))])];
1065
1226
  };
@@ -1076,21 +1237,26 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1076
1237
  const yearDatas = computeYearDatas.value;
1077
1238
  const dateListValue = computeDateListValue.value;
1078
1239
  const matchFormat = 'yyyy';
1079
- return [(0, _vue.h)('table', {
1080
- class: `vxe-calendar--date-${datePanelType}-view`,
1081
- cellspacing: 0,
1082
- cellpadding: 0,
1083
- border: 0
1084
- }, [(0, _vue.h)('tbody', yearDatas.map(rows => {
1085
- return (0, _vue.h)('tr', rows.map(item => {
1086
- return (0, _vue.h)('td', {
1087
- class: ['vxe-calendar--view-td', {
1240
+ return [(0, _vue.h)('div', {
1241
+ class: ['vxe-calendar--view-wrapper', `type--${datePanelType}`]
1242
+ }, [(0, _vue.h)('div', {
1243
+ class: 'vxe-calendar--view-body'
1244
+ }, yearDatas.map(rows => {
1245
+ return (0, _vue.h)('div', {
1246
+ class: 'vxe-calendar--view-row',
1247
+ style: {
1248
+ height: `${100 / yearDatas.length}%`
1249
+ }
1250
+ }, rows.map(item => {
1251
+ const isSelected = multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat);
1252
+ return (0, _vue.h)('div', {
1253
+ class: ['vxe-calendar--view-item', {
1088
1254
  'is--prev': item.isPrev,
1089
1255
  'is--current': item.isCurrent,
1090
1256
  'is--now': item.isNow,
1091
1257
  'is--next': item.isNext,
1092
1258
  'is--disabled': isDateDisabled(item),
1093
- 'is--selected': multiple ? dateListValue.some(val => _xeUtils.default.isDateSame(val, item.date, matchFormat)) : _xeUtils.default.isDateSame(dateValue, item.date, matchFormat),
1259
+ 'is--selected': isSelected,
1094
1260
  'is--hover': _xeUtils.default.isDateSame(datePanelValue, item.date, matchFormat)
1095
1261
  }],
1096
1262
  style: Object.assign({}, _xeUtils.default.isFunction(cellStyle) ? cellStyle({
@@ -1098,10 +1264,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1098
1264
  viewType: datePanelType,
1099
1265
  date: item.date,
1100
1266
  $calendar: $xeCalendar
1101
- }) : cellStyle),
1102
- onClick: () => dateSelectEvent(item),
1103
- onMouseenter: () => dateMouseenterEvent(item)
1104
- }, renderDateLabel(item, item.year));
1267
+ }) : cellStyle, {
1268
+ width: `${100 / rows.length}%`
1269
+ }),
1270
+ onClick: evnt => dateClickEvent(evnt, item),
1271
+ onContextmenu: evnt => datContextmenuEvent(evnt, item),
1272
+ onMouseenter: () => dateMouseenterEvent(item),
1273
+ onMouseleave: dateMouseleaveEvent
1274
+ }, [(0, _vue.h)('div', {
1275
+ class: 'vxe-calendar--view-item-inner'
1276
+ }, renderDateLabel(item, item.year))]);
1105
1277
  }));
1106
1278
  }))])];
1107
1279
  };
@@ -1168,7 +1340,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1168
1340
  class: 'vxe-calendar--confirm',
1169
1341
  type: 'button',
1170
1342
  onClick: dateConfirmEvent
1171
- }, (0, _ui.getI18n)('vxe.button.confirm'))]) : null])]), (0, _vue.h)('div', {
1343
+ }, getI18n('vxe.button.confirm'))]) : null])]), (0, _vue.h)('div', {
1172
1344
  class: 'vxe-calendar--body'
1173
1345
  }, renderDateTable())];
1174
1346
  };
@@ -1225,6 +1397,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1225
1397
  }
1226
1398
  });
1227
1399
  (0, _vue.onMounted)(() => {
1400
+ const {
1401
+ menuConfig
1402
+ } = props;
1403
+ const VxeUIContextMenu = _ui.VxeUI.getComponent('VxeContextMenu');
1404
+ if (menuConfig && !VxeUIContextMenu) {
1405
+ (0, _log.errLog)('vxe.error.reqComp', ['vxe-context-menu']);
1406
+ }
1228
1407
  dateOpenPanel();
1229
1408
  });
1230
1409
  initValue();