Header.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  10. var _select = _interopRequireDefault(require("../select"));
  11. var _radio = require("../radio");
  12. var YearSelectOffset = 10;
  13. var YearSelectTotal = 20;
  14. function YearSelect(props) {
  15. var fullscreen = props.fullscreen,
  16. validRange = props.validRange,
  17. generateConfig = props.generateConfig,
  18. locale = props.locale,
  19. prefixCls = props.prefixCls,
  20. value = props.value,
  21. _onChange = props.onChange,
  22. divRef = props.divRef;
  23. var year = generateConfig.getYear(value || generateConfig.getNow());
  24. var start = year - YearSelectOffset;
  25. var end = start + YearSelectTotal;
  26. if (validRange) {
  27. start = generateConfig.getYear(validRange[0]);
  28. end = generateConfig.getYear(validRange[1]) + 1;
  29. }
  30. var suffix = locale && locale.year === '年' ? '年' : '';
  31. var options = [];
  32. for (var index = start; index < end; index++) {
  33. options.push({
  34. label: "".concat(index).concat(suffix),
  35. value: index
  36. });
  37. }
  38. return (0, _vue.createVNode)(_select.default, {
  39. "size": fullscreen ? undefined : 'small',
  40. "options": options,
  41. "value": year,
  42. "class": "".concat(prefixCls, "-year-select"),
  43. "onChange": function onChange(numYear) {
  44. var newDate = generateConfig.setYear(value, numYear);
  45. if (validRange) {
  46. var _validRange = (0, _slicedToArray2.default)(validRange, 2),
  47. startDate = _validRange[0],
  48. endDate = _validRange[1];
  49. var newYear = generateConfig.getYear(newDate);
  50. var newMonth = generateConfig.getMonth(newDate);
  51. if (newYear === generateConfig.getYear(endDate) && newMonth > generateConfig.getMonth(endDate)) {
  52. newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(endDate));
  53. }
  54. if (newYear === generateConfig.getYear(startDate) && newMonth < generateConfig.getMonth(startDate)) {
  55. newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(startDate));
  56. }
  57. }
  58. _onChange(newDate);
  59. },
  60. "getPopupContainer": function getPopupContainer() {
  61. return divRef.value;
  62. }
  63. }, null);
  64. }
  65. YearSelect.inheritAttrs = false;
  66. function MonthSelect(props) {
  67. var prefixCls = props.prefixCls,
  68. fullscreen = props.fullscreen,
  69. validRange = props.validRange,
  70. value = props.value,
  71. generateConfig = props.generateConfig,
  72. locale = props.locale,
  73. _onChange2 = props.onChange,
  74. divRef = props.divRef;
  75. var month = generateConfig.getMonth(value || generateConfig.getNow());
  76. var start = 0;
  77. var end = 11;
  78. if (validRange) {
  79. var _validRange2 = (0, _slicedToArray2.default)(validRange, 2),
  80. rangeStart = _validRange2[0],
  81. rangeEnd = _validRange2[1];
  82. var currentYear = generateConfig.getYear(value);
  83. if (generateConfig.getYear(rangeEnd) === currentYear) {
  84. end = generateConfig.getMonth(rangeEnd);
  85. }
  86. if (generateConfig.getYear(rangeStart) === currentYear) {
  87. start = generateConfig.getMonth(rangeStart);
  88. }
  89. }
  90. var months = locale.shortMonths || generateConfig.locale.getShortMonths(locale.locale);
  91. var options = [];
  92. for (var index = start; index <= end; index += 1) {
  93. options.push({
  94. label: months[index],
  95. value: index
  96. });
  97. }
  98. return (0, _vue.createVNode)(_select.default, {
  99. "size": fullscreen ? undefined : 'small',
  100. "class": "".concat(prefixCls, "-month-select"),
  101. "value": month,
  102. "options": options,
  103. "onChange": function onChange(newMonth) {
  104. _onChange2(generateConfig.setMonth(value, newMonth));
  105. },
  106. "getPopupContainer": function getPopupContainer() {
  107. return divRef.value;
  108. }
  109. }, null);
  110. }
  111. MonthSelect.inheritAttrs = false;
  112. function ModeSwitch(props) {
  113. var prefixCls = props.prefixCls,
  114. locale = props.locale,
  115. mode = props.mode,
  116. fullscreen = props.fullscreen,
  117. onModeChange = props.onModeChange;
  118. return (0, _vue.createVNode)(_radio.Group, {
  119. "onChange": function onChange(_ref) {
  120. var value = _ref.target.value;
  121. onModeChange(value);
  122. },
  123. "value": mode,
  124. "size": fullscreen ? undefined : 'small',
  125. "class": "".concat(prefixCls, "-mode-switch")
  126. }, {
  127. default: function _default() {
  128. return [(0, _vue.createVNode)(_radio.Button, {
  129. "value": "month"
  130. }, {
  131. default: function _default() {
  132. return [locale.month];
  133. }
  134. }), (0, _vue.createVNode)(_radio.Button, {
  135. "value": "year"
  136. }, {
  137. default: function _default() {
  138. return [locale.year];
  139. }
  140. })];
  141. }
  142. });
  143. }
  144. ModeSwitch.inheritAttrs = false;
  145. var _default2 = (0, _vue.defineComponent)({
  146. name: 'CalendarHeader',
  147. inheritAttrs: false,
  148. props: ['mode', 'prefixCls', 'value', 'validRange', 'generateConfig', 'locale', 'mode', 'fullscreen'],
  149. setup: function setup(_props, _ref2) {
  150. var attrs = _ref2.attrs;
  151. var divRef = (0, _vue.ref)(null);
  152. return function () {
  153. var props = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _props), attrs);
  154. var prefixCls = props.prefixCls,
  155. fullscreen = props.fullscreen,
  156. mode = props.mode,
  157. onChange = props.onChange,
  158. onModeChange = props.onModeChange;
  159. var sharedProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  160. onChange: onChange,
  161. fullscreen: fullscreen,
  162. divRef: divRef
  163. });
  164. return (0, _vue.createVNode)("div", {
  165. "class": "".concat(prefixCls, "-header"),
  166. "ref": divRef
  167. }, [(0, _vue.createVNode)(YearSelect, sharedProps, null), mode === 'month' && (0, _vue.createVNode)(MonthSelect, sharedProps, null), (0, _vue.createVNode)(ModeSwitch, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, sharedProps), {}, {
  168. "onModeChange": onModeChange
  169. }), null)]);
  170. };
  171. }
  172. });
  173. exports.default = _default2;