vxe-table 4.1.15 → 4.1.17-beta.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.
@@ -283,12 +283,15 @@ export default defineComponent({
283
283
  }
284
284
  return '';
285
285
  });
286
+ var computeFirstDayOfWeek = computed(function () {
287
+ var startDay = props.startDay, startWeek = props.startWeek;
288
+ return XEUtils.toNumber(XEUtils.isNumber(startDay) || XEUtils.isString(startDay) ? startDay : startWeek);
289
+ });
286
290
  var computeWeekDatas = computed(function () {
287
291
  var weeks = [];
288
292
  var isDatePickerType = computeIsDatePickerType.value;
289
293
  if (isDatePickerType) {
290
- var startDay = props.startDay, startWeek = props.startWeek;
291
- var sWeek = XEUtils.toNumber(XEUtils.isNumber(startDay) || XEUtils.isString(startDay) ? startDay : startWeek);
294
+ var sWeek = computeFirstDayOfWeek.value;
292
295
  weeks.push(sWeek);
293
296
  for (var index = 0; index < 6; index++) {
294
297
  if (sWeek >= 6) {
@@ -435,6 +438,7 @@ export default defineComponent({
435
438
  });
436
439
  var computeWeekDates = computed(function () {
437
440
  var dayDatas = computeDayDatas.value;
441
+ var firstDayOfWeek = computeFirstDayOfWeek.value;
438
442
  return dayDatas.map(function (list) {
439
443
  var firstItem = list[0];
440
444
  var item = {
@@ -444,7 +448,7 @@ export default defineComponent({
444
448
  isCurrent: false,
445
449
  isNow: false,
446
450
  isNext: false,
447
- label: XEUtils.getYearWeek(firstItem.date)
451
+ label: XEUtils.getYearWeek(firstItem.date, firstDayOfWeek)
448
452
  };
449
453
  return [item].concat(list);
450
454
  });
@@ -610,6 +614,7 @@ export default defineComponent({
610
614
  var type = props.type;
611
615
  var valueFormat = props.valueFormat;
612
616
  var dateLabelFormat = computeDateLabelFormat.value;
617
+ var firstDayOfWeek = computeFirstDayOfWeek.value;
613
618
  var dValue = null;
614
619
  var dLabel = '';
615
620
  if (value) {
@@ -621,7 +626,20 @@ export default defineComponent({
621
626
  }
622
627
  }
623
628
  if (XEUtils.isValidDate(dValue)) {
624
- dLabel = XEUtils.toDateString(dValue, dateLabelFormat);
629
+ dLabel = XEUtils.toDateString(dValue, dateLabelFormat, { firstDay: firstDayOfWeek });
630
+ // 由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年
631
+ if (dateLabelFormat && type === 'week') {
632
+ var firstWeekDate = XEUtils.getWhatWeek(dValue, 0, firstDayOfWeek, firstDayOfWeek);
633
+ if (firstWeekDate.getFullYear() < dValue.getFullYear()) {
634
+ var yyIndex = dateLabelFormat.indexOf('yyyy');
635
+ if (yyIndex > -1) {
636
+ var yyNum = Number(dLabel.substring(yyIndex, yyIndex + 4));
637
+ if (yyNum && !isNaN(yyNum)) {
638
+ dLabel = dLabel.replace("" + yyNum, "" + (yyNum - 1));
639
+ }
640
+ }
641
+ }
642
+ }
625
643
  }
626
644
  else {
627
645
  dValue = null;
@@ -680,16 +698,17 @@ export default defineComponent({
680
698
  var datetimePanelValue = reactData.datetimePanelValue;
681
699
  var isDateTimeType = computeIsDateTimeType.value;
682
700
  var dateValueFormat = computeDateValueFormat.value;
701
+ var firstDayOfWeek = computeFirstDayOfWeek.value;
683
702
  if (props.type === 'week') {
684
703
  var sWeek = XEUtils.toNumber(props.selectDay);
685
- date = XEUtils.getWhatWeek(date, 0, sWeek);
704
+ date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek);
686
705
  }
687
706
  else if (isDateTimeType) {
688
707
  date.setHours(datetimePanelValue.getHours());
689
708
  date.setMinutes(datetimePanelValue.getMinutes());
690
709
  date.setSeconds(datetimePanelValue.getSeconds());
691
710
  }
692
- var inpVal = XEUtils.toDateString(date, dateValueFormat);
711
+ var inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek });
693
712
  dateCheckMonth(date);
694
713
  if (!XEUtils.isEqual(modelValue, inpVal)) {
695
714
  emitModel(inpVal, { type: 'update' });
@@ -740,6 +759,7 @@ export default defineComponent({
740
759
  }
741
760
  else {
742
761
  var isChange = false;
762
+ var firstDayOfWeek = computeFirstDayOfWeek.value;
743
763
  if (type === 'datetime') {
744
764
  var dateValue = computeDateValue.value;
745
765
  if (inputValue !== XEUtils.toDateString(dateValue, dateLabelFormat) || inputValue !== XEUtils.toDateString(inpDateVal, dateLabelFormat)) {
@@ -752,7 +772,7 @@ export default defineComponent({
752
772
  else {
753
773
  isChange = true;
754
774
  }
755
- reactData.inputValue = XEUtils.toDateString(inpDateVal, dateLabelFormat);
775
+ reactData.inputValue = XEUtils.toDateString(inpDateVal, dateLabelFormat, { firstDay: firstDayOfWeek });
756
776
  if (isChange) {
757
777
  dateChange(inpDateVal);
758
778
  }
@@ -1192,17 +1212,18 @@ export default defineComponent({
1192
1212
  }
1193
1213
  else {
1194
1214
  var offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first');
1215
+ var firstDayOfWeek = computeFirstDayOfWeek.value;
1195
1216
  if (isLeftArrow) {
1196
1217
  offsetDay = XEUtils.getWhatDay(offsetDay, -1);
1197
1218
  }
1198
1219
  else if (isUpArrow) {
1199
- offsetDay = XEUtils.getWhatWeek(offsetDay, -1);
1220
+ offsetDay = XEUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek);
1200
1221
  }
1201
1222
  else if (isRightArrow) {
1202
1223
  offsetDay = XEUtils.getWhatDay(offsetDay, 1);
1203
1224
  }
1204
1225
  else if (isDwArrow) {
1205
- offsetDay = XEUtils.getWhatWeek(offsetDay, 1);
1226
+ offsetDay = XEUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek);
1206
1227
  }
1207
1228
  dateMoveDay(offsetDay);
1208
1229
  }
@@ -2037,8 +2058,11 @@ export default defineComponent({
2037
2058
  initValue();
2038
2059
  });
2039
2060
  watch(computeDateLabelFormat, function () {
2040
- dateParseValue(reactData.datePanelValue);
2041
- reactData.inputValue = reactData.datePanelLabel;
2061
+ var isDatePickerType = computeIsDatePickerType.value;
2062
+ if (isDatePickerType) {
2063
+ dateParseValue(reactData.datePanelValue);
2064
+ reactData.inputValue = reactData.datePanelLabel;
2065
+ }
2042
2066
  });
2043
2067
  nextTick(function () {
2044
2068
  GlobalEvent.on($xeinput, 'mousewheel', handleGlobalMousewheelEvent);
@@ -11,7 +11,8 @@ export default defineComponent({
11
11
  title: [String, Number],
12
12
  content: [String, Number],
13
13
  disabled: Boolean,
14
- size: { type: String, default: function () { return GlobalConfig.radio.size || GlobalConfig.size; } }
14
+ strict: { type: Boolean, default: function () { return GlobalConfig.radioButton.strict; } },
15
+ size: { type: String, default: function () { return GlobalConfig.radioButton.size || GlobalConfig.size; } }
15
16
  },
16
17
  emits: [
17
18
  'update:modelValue',
@@ -34,6 +35,9 @@ export default defineComponent({
34
35
  var computeName = computed(function () {
35
36
  return $xeradiogroup ? $xeradiogroup.name : null;
36
37
  });
38
+ var computeStrict = computed(function () {
39
+ return $xeradiogroup ? $xeradiogroup.props.strict : props.strict;
40
+ });
37
41
  var computeChecked = computed(function () {
38
42
  var modelValue = props.modelValue, label = props.label;
39
43
  return $xeradiogroup ? $xeradiogroup.props.modelValue === label : modelValue === label;
@@ -44,16 +48,27 @@ export default defineComponent({
44
48
  }
45
49
  };
46
50
  Object.assign($xeradiobutton, radioButtonMethods);
51
+ var handleValue = function (label, evnt) {
52
+ if ($xeradiogroup) {
53
+ $xeradiogroup.handleChecked({ label: label }, evnt);
54
+ }
55
+ else {
56
+ emit('update:modelValue', label);
57
+ radioButtonMethods.dispatchEvent('change', { label: label }, evnt);
58
+ }
59
+ };
47
60
  var changeEvent = function (evnt) {
48
- var label = props.label;
49
61
  var isDisabled = computeDisabled.value;
50
62
  if (!isDisabled) {
51
- if ($xeradiogroup) {
52
- $xeradiogroup.handleChecked({ label: label }, evnt);
53
- }
54
- else {
55
- emit('update:modelValue', label);
56
- radioButtonMethods.dispatchEvent('change', { label: label }, evnt);
63
+ handleValue(props.label, evnt);
64
+ }
65
+ };
66
+ var clickEvent = function (evnt) {
67
+ var isDisabled = computeDisabled.value;
68
+ var isStrict = computeStrict.value;
69
+ if (!isDisabled && !isStrict) {
70
+ if (props.label === ($xeradiogroup ? $xeradiogroup.props.modelValue : props.modelValue)) {
71
+ handleValue(null, evnt);
57
72
  }
58
73
  }
59
74
  };
@@ -76,7 +91,8 @@ export default defineComponent({
76
91
  name: name,
77
92
  checked: checked,
78
93
  disabled: isDisabled,
79
- onChange: changeEvent
94
+ onChange: changeEvent,
95
+ onClick: clickEvent
80
96
  }),
81
97
  h('span', {
82
98
  class: 'vxe-radio--label'
@@ -7,6 +7,7 @@ export default defineComponent({
7
7
  props: {
8
8
  modelValue: [String, Number, Boolean],
9
9
  disabled: Boolean,
10
+ strict: { type: Boolean, default: function () { return GlobalConfig.radio.strict; } },
10
11
  size: { type: String, default: function () { return GlobalConfig.radio.size || GlobalConfig.size; } }
11
12
  },
12
13
  emits: [
@@ -12,6 +12,7 @@ export default defineComponent({
12
12
  content: [String, Number],
13
13
  disabled: Boolean,
14
14
  name: String,
15
+ strict: { type: Boolean, default: function () { return GlobalConfig.radio.strict; } },
15
16
  size: { type: String, default: function () { return GlobalConfig.radio.size || GlobalConfig.size; } }
16
17
  },
17
18
  emits: [
@@ -35,20 +36,34 @@ export default defineComponent({
35
36
  var computeName = computed(function () {
36
37
  return $xeradiogroup ? $xeradiogroup.name : props.name;
37
38
  });
39
+ var computeStrict = computed(function () {
40
+ return $xeradiogroup ? $xeradiogroup.props.strict : props.strict;
41
+ });
38
42
  var computeChecked = computed(function () {
39
43
  var modelValue = props.modelValue, label = props.label;
40
44
  return $xeradiogroup ? $xeradiogroup.props.modelValue === label : modelValue === label;
41
45
  });
46
+ var handleValue = function (label, evnt) {
47
+ if ($xeradiogroup) {
48
+ $xeradiogroup.handleChecked({ label: label }, evnt);
49
+ }
50
+ else {
51
+ emit('update:modelValue', label);
52
+ radioMethods.dispatchEvent('change', { label: label }, evnt);
53
+ }
54
+ };
42
55
  var changeEvent = function (evnt) {
43
- var label = props.label;
44
56
  var isDisabled = computeDisabled.value;
45
57
  if (!isDisabled) {
46
- if ($xeradiogroup) {
47
- $xeradiogroup.handleChecked({ label: label }, evnt);
48
- }
49
- else {
50
- emit('update:modelValue', label);
51
- radioMethods.dispatchEvent('change', { label: label }, evnt);
58
+ handleValue(props.label, evnt);
59
+ }
60
+ };
61
+ var clickEvent = function (evnt) {
62
+ var isDisabled = computeDisabled.value;
63
+ var isStrict = computeStrict.value;
64
+ if (!isDisabled && !isStrict) {
65
+ if (props.label === ($xeradiogroup ? $xeradiogroup.props.modelValue : props.modelValue)) {
66
+ handleValue(null, evnt);
52
67
  }
53
68
  }
54
69
  };
@@ -77,7 +92,8 @@ export default defineComponent({
77
92
  name: name,
78
93
  checked: checked,
79
94
  disabled: isDisabled,
80
- onChange: changeEvent
95
+ onChange: changeEvent,
96
+ onClick: clickEvent
81
97
  }),
82
98
  h('span', {
83
99
  class: 'vxe-radio--icon'
@@ -1107,7 +1107,7 @@ export default defineComponent({
1107
1107
  fullAllDataRowIdData[rowid] = rest;
1108
1108
  fullDataRowIdData[rowid] = rest;
1109
1109
  }
1110
- }, { children: treeOpts.mapChildren });
1110
+ }, { children: treeOpts.transform ? treeOpts.mapChildren : treeOpts.children });
1111
1111
  }
1112
1112
  else {
1113
1113
  afterFullData.forEach(function (row, index) {
@@ -2433,7 +2433,7 @@ export default defineComponent({
2433
2433
  }
2434
2434
  XEUtils.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
2435
2435
  var rowid = getRowid($xetable, childRow);
2436
- var rest = { row: childRow, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items: items, parent: parent, level: parentLevel + nodes.length };
2436
+ var rest = { row: childRow, rowid: rowid, seq: -1, index: index, _index: -1, $index: -1, items: items, parent: parent, level: parentLevel + nodes.length };
2437
2437
  fullDataRowIdData[rowid] = rest;
2438
2438
  fullAllDataRowIdData[rowid] = rest;
2439
2439
  }, treeOpts);
@@ -2441,6 +2441,7 @@ export default defineComponent({
2441
2441
  if (transform) {
2442
2442
  row[mapChildren] = rows;
2443
2443
  }
2444
+ updateAfterDataIndex();
2444
2445
  return rows;
2445
2446
  });
2446
2447
  },
@@ -2765,6 +2766,26 @@ export default defineComponent({
2765
2766
  }
2766
2767
  return rowList;
2767
2768
  },
2769
+ /**
2770
+ * 只对 tree-config 有效,获取行的父级
2771
+ */
2772
+ getParentRow: function (rowOrRowid) {
2773
+ var treeConfig = props.treeConfig;
2774
+ var fullDataRowIdData = internalData.fullDataRowIdData;
2775
+ if (rowOrRowid && treeConfig) {
2776
+ var rowid = void 0;
2777
+ if (XEUtils.isString(rowOrRowid)) {
2778
+ rowid = rowOrRowid;
2779
+ }
2780
+ else {
2781
+ rowid = getRowid($xetable, rowOrRowid);
2782
+ }
2783
+ if (rowid) {
2784
+ return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].parent : null;
2785
+ }
2786
+ }
2787
+ return null;
2788
+ },
2768
2789
  /**
2769
2790
  * 根据行的唯一主键获取行
2770
2791
  * @param {String/Number} rowid 行主键
@@ -284,7 +284,16 @@ var GlobalConfig = {
284
284
  // transfer: false
285
285
  },
286
286
  radio: {
287
- // size: null
287
+ // size: null,
288
+ strict: true
289
+ },
290
+ radioButton: {
291
+ // size: null,
292
+ strict: true
293
+ },
294
+ radioGroup: {
295
+ // size: null,
296
+ strict: true
288
297
  },
289
298
  checkbox: {
290
299
  // size: null