index.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. var _TimeHeader = _interopRequireDefault(require("./TimeHeader"));
  11. var _TimeBody = _interopRequireDefault(require("./TimeBody"));
  12. var _uiUtil = require("../../utils/uiUtil");
  13. var _classNames2 = _interopRequireDefault(require("../../../_util/classNames"));
  14. var _useMergeProps = _interopRequireDefault(require("../../hooks/useMergeProps"));
  15. var countBoolean = function countBoolean(boolList) {
  16. return boolList.filter(function (bool) {
  17. return bool !== false;
  18. }).length;
  19. };
  20. function TimePanel(_props) {
  21. var props = (0, _useMergeProps.default)(_props);
  22. var generateConfig = props.generateConfig,
  23. _props$format = props.format,
  24. format = _props$format === void 0 ? 'HH:mm:ss' : _props$format,
  25. prefixCls = props.prefixCls,
  26. active = props.active,
  27. operationRef = props.operationRef,
  28. showHour = props.showHour,
  29. showMinute = props.showMinute,
  30. showSecond = props.showSecond,
  31. _props$use12Hours = props.use12Hours,
  32. use12Hours = _props$use12Hours === void 0 ? false : _props$use12Hours,
  33. onSelect = props.onSelect,
  34. value = props.value;
  35. var panelPrefixCls = "".concat(prefixCls, "-time-panel");
  36. var bodyOperationRef = (0, _vue.ref)();
  37. // ======================= Keyboard =======================
  38. var activeColumnIndex = (0, _vue.ref)(-1);
  39. var columnsCount = countBoolean([showHour, showMinute, showSecond, use12Hours]);
  40. operationRef.value = {
  41. onKeydown: function onKeydown(event) {
  42. return (0, _uiUtil.createKeydownHandler)(event, {
  43. onLeftRight: function onLeftRight(diff) {
  44. activeColumnIndex.value = (activeColumnIndex.value + diff + columnsCount) % columnsCount;
  45. },
  46. onUpDown: function onUpDown(diff) {
  47. if (activeColumnIndex.value === -1) {
  48. activeColumnIndex.value = 0;
  49. } else if (bodyOperationRef.value) {
  50. bodyOperationRef.value.onUpDown(diff);
  51. }
  52. },
  53. onEnter: function onEnter() {
  54. onSelect(value || generateConfig.getNow(), 'key');
  55. activeColumnIndex.value = -1;
  56. }
  57. });
  58. },
  59. onBlur: function onBlur() {
  60. activeColumnIndex.value = -1;
  61. }
  62. };
  63. return (0, _vue.createVNode)("div", {
  64. "class": (0, _classNames2.default)(panelPrefixCls, (0, _defineProperty2.default)({}, "".concat(panelPrefixCls, "-active"), active))
  65. }, [(0, _vue.createVNode)(_TimeHeader.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  66. "format": format,
  67. "prefixCls": prefixCls
  68. }), null), (0, _vue.createVNode)(_TimeBody.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  69. "prefixCls": prefixCls,
  70. "activeColumnIndex": activeColumnIndex.value,
  71. "operationRef": bodyOperationRef
  72. }), null)]);
  73. }
  74. TimePanel.displayName = 'TimePanel';
  75. TimePanel.inheritAttrs = false;
  76. var _default = TimePanel;
  77. exports.default = _default;