TimeUnitColumn.js 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _uiUtil = require("../../utils/uiUtil");
  10. var _PanelContext = require("../../PanelContext");
  11. var _classNames3 = _interopRequireDefault(require("../../../_util/classNames"));
  12. var _default = (0, _vue.defineComponent)({
  13. name: 'TimeUnitColumn',
  14. props: ['prefixCls', 'units', 'onSelect', 'value', 'active', 'hideDisabledOptions'],
  15. setup: function setup(props) {
  16. var _useInjectPanel = (0, _PanelContext.useInjectPanel)(),
  17. open = _useInjectPanel.open;
  18. var ulRef = (0, _vue.ref)(null);
  19. var liRefs = (0, _vue.ref)(new Map());
  20. var scrollRef = (0, _vue.ref)();
  21. (0, _vue.watch)(function () {
  22. return props.value;
  23. }, function () {
  24. var li = liRefs.value.get(props.value);
  25. if (li && open.value !== false) {
  26. (0, _uiUtil.scrollTo)(ulRef.value, li.offsetTop, 120);
  27. }
  28. });
  29. (0, _vue.onBeforeUnmount)(function () {
  30. var _scrollRef$value;
  31. (_scrollRef$value = scrollRef.value) === null || _scrollRef$value === void 0 ? void 0 : _scrollRef$value.call(scrollRef);
  32. });
  33. (0, _vue.watch)(open, function () {
  34. var _scrollRef$value2;
  35. (_scrollRef$value2 = scrollRef.value) === null || _scrollRef$value2 === void 0 ? void 0 : _scrollRef$value2.call(scrollRef);
  36. (0, _vue.nextTick)(function () {
  37. if (open.value) {
  38. var li = liRefs.value.get(props.value);
  39. if (li) {
  40. scrollRef.value = (0, _uiUtil.waitElementReady)(li, function () {
  41. (0, _uiUtil.scrollTo)(ulRef.value, li.offsetTop, 0);
  42. });
  43. }
  44. }
  45. });
  46. }, {
  47. immediate: true,
  48. flush: 'post'
  49. });
  50. return function () {
  51. var prefixCls = props.prefixCls,
  52. units = props.units,
  53. onSelect = props.onSelect,
  54. value = props.value,
  55. active = props.active,
  56. hideDisabledOptions = props.hideDisabledOptions;
  57. var cellPrefixCls = "".concat(prefixCls, "-cell");
  58. return (0, _vue.createVNode)("ul", {
  59. "class": (0, _classNames3.default)("".concat(prefixCls, "-column"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-column-active"), active)),
  60. "ref": ulRef,
  61. "style": {
  62. position: 'relative'
  63. }
  64. }, [units.map(function (unit) {
  65. var _classNames2;
  66. if (hideDisabledOptions && unit.disabled) {
  67. return null;
  68. }
  69. return (0, _vue.createVNode)("li", {
  70. "key": unit.value,
  71. "ref": function ref(element) {
  72. liRefs.value.set(unit.value, element);
  73. },
  74. "class": (0, _classNames3.default)(cellPrefixCls, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, "".concat(cellPrefixCls, "-disabled"), unit.disabled), (0, _defineProperty2.default)(_classNames2, "".concat(cellPrefixCls, "-selected"), value === unit.value), _classNames2)),
  75. "onClick": function onClick() {
  76. if (unit.disabled) {
  77. return;
  78. }
  79. onSelect(unit.value);
  80. }
  81. }, [(0, _vue.createVNode)("div", {
  82. "class": "".concat(cellPrefixCls, "-inner")
  83. }, [unit.label])]);
  84. })]);
  85. };
  86. }
  87. });
  88. exports.default = _default;