123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _vue = require("vue");
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
- var _TimeUnitColumn = _interopRequireDefault(require("./TimeUnitColumn"));
- var _miscUtil = require("../../utils/miscUtil");
- var _timeUtil = require("../../utils/timeUtil");
- var _vnode = require("../../../_util/vnode");
- function generateUnits(start, end, step, disabledUnits) {
- var units = [];
- for (var i = start; i <= end; i += step) {
- units.push({
- label: (0, _miscUtil.leftPad)(i, 2),
- value: i,
- disabled: (disabledUnits || []).includes(i)
- });
- }
- return units;
- }
- var TimeBody = (0, _vue.defineComponent)({
- compatConfig: {
- MODE: 3
- },
- name: 'TimeBody',
- inheritAttrs: false,
- props: ['generateConfig', 'prefixCls', 'operationRef', 'activeColumnIndex', 'value', 'showHour', 'showMinute', 'showSecond', 'use12Hours', 'hourStep', 'minuteStep', 'secondStep', 'disabledHours', 'disabledMinutes', 'disabledSeconds', 'disabledTime', 'hideDisabledOptions', 'onSelect'],
- setup: function setup(props) {
- var originHour = (0, _vue.computed)(function () {
- return props.value ? props.generateConfig.getHour(props.value) : -1;
- });
- var isPM = (0, _vue.computed)(function () {
- if (props.use12Hours) {
- return originHour.value >= 12; // -1 means should display AM
- } else {
- return false;
- }
- });
- var hour = (0, _vue.computed)(function () {
- // Should additional logic to handle 12 hours
- if (props.use12Hours) {
- return originHour.value % 12;
- } else {
- return originHour.value;
- }
- });
- var minute = (0, _vue.computed)(function () {
- return props.value ? props.generateConfig.getMinute(props.value) : -1;
- });
- var second = (0, _vue.computed)(function () {
- return props.value ? props.generateConfig.getSecond(props.value) : -1;
- });
- var now = (0, _vue.ref)(props.generateConfig.getNow());
- var mergedDisabledHours = (0, _vue.ref)();
- var mergedDisabledMinutes = (0, _vue.ref)();
- var mergedDisabledSeconds = (0, _vue.ref)();
- (0, _vue.onBeforeUpdate)(function () {
- now.value = props.generateConfig.getNow();
- });
- (0, _vue.watchEffect)(function () {
- if (props.disabledTime) {
- var disabledConfig = props.disabledTime(now);
- var _ref = [disabledConfig.disabledHours, disabledConfig.disabledMinutes, disabledConfig.disabledSeconds];
- mergedDisabledHours.value = _ref[0];
- mergedDisabledMinutes.value = _ref[1];
- mergedDisabledSeconds.value = _ref[2];
- } else {
- var _ref2 = [props.disabledHours, props.disabledMinutes, props.disabledSeconds];
- mergedDisabledHours.value = _ref2[0];
- mergedDisabledMinutes.value = _ref2[1];
- mergedDisabledSeconds.value = _ref2[2];
- }
- });
- var setTime = function setTime(isNewPM, newHour, newMinute, newSecond) {
- var newDate = props.value || props.generateConfig.getNow();
- var mergedHour = Math.max(0, newHour);
- var mergedMinute = Math.max(0, newMinute);
- var mergedSecond = Math.max(0, newSecond);
- newDate = (0, _timeUtil.setTime)(props.generateConfig, newDate, !props.use12Hours || !isNewPM ? mergedHour : mergedHour + 12, mergedMinute, mergedSecond);
- return newDate;
- };
- // ========================= Unit =========================
- var rawHours = (0, _vue.computed)(function () {
- var _props$hourStep;
- return generateUnits(0, 23, (_props$hourStep = props.hourStep) !== null && _props$hourStep !== void 0 ? _props$hourStep : 1, mergedDisabledHours.value && mergedDisabledHours.value());
- });
- // const memorizedRawHours = useMemo(() => rawHours, rawHours, shouldUnitsUpdate);
- var AMPMDisabled = (0, _vue.computed)(function () {
- if (!props.use12Hours) {
- return [false, false];
- }
- var AMPMDisabled = [true, true];
- rawHours.value.forEach(function (_ref3) {
- var disabled = _ref3.disabled,
- hourValue = _ref3.value;
- if (disabled) return;
- if (hourValue >= 12) {
- AMPMDisabled[1] = false;
- } else {
- AMPMDisabled[0] = false;
- }
- });
- return AMPMDisabled;
- });
- var hours = (0, _vue.computed)(function () {
- if (!props.use12Hours) return rawHours.value;
- return rawHours.value.filter(isPM.value ? function (hourMeta) {
- return hourMeta.value >= 12;
- } : function (hourMeta) {
- return hourMeta.value < 12;
- }).map(function (hourMeta) {
- var hourValue = hourMeta.value % 12;
- var hourLabel = hourValue === 0 ? '12' : (0, _miscUtil.leftPad)(hourValue, 2);
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, hourMeta), {}, {
- label: hourLabel,
- value: hourValue
- });
- });
- });
- var minutes = (0, _vue.computed)(function () {
- var _props$minuteStep;
- return generateUnits(0, 59, (_props$minuteStep = props.minuteStep) !== null && _props$minuteStep !== void 0 ? _props$minuteStep : 1, mergedDisabledMinutes.value && mergedDisabledMinutes.value(originHour.value));
- });
- var seconds = (0, _vue.computed)(function () {
- var _props$secondStep;
- return generateUnits(0, 59, (_props$secondStep = props.secondStep) !== null && _props$secondStep !== void 0 ? _props$secondStep : 1, mergedDisabledSeconds.value && mergedDisabledSeconds.value(originHour.value, minute.value));
- });
- return function () {
- var prefixCls = props.prefixCls,
- operationRef = props.operationRef,
- activeColumnIndex = props.activeColumnIndex,
- showHour = props.showHour,
- showMinute = props.showMinute,
- showSecond = props.showSecond,
- use12Hours = props.use12Hours,
- hideDisabledOptions = props.hideDisabledOptions,
- onSelect = props.onSelect;
- var columns = [];
- var contentPrefixCls = "".concat(prefixCls, "-content");
- var columnPrefixCls = "".concat(prefixCls, "-time-panel");
- // ====================== Operations ======================
- operationRef.value = {
- onUpDown: function onUpDown(diff) {
- var column = columns[activeColumnIndex];
- if (column) {
- var valueIndex = column.units.findIndex(function (unit) {
- return unit.value === column.value;
- });
- var unitLen = column.units.length;
- for (var i = 1; i < unitLen; i += 1) {
- var nextUnit = column.units[(valueIndex + diff * i + unitLen) % unitLen];
- if (nextUnit.disabled !== true) {
- column.onSelect(nextUnit.value);
- break;
- }
- }
- }
- }
- };
- // ======================== Render ========================
- function addColumnNode(condition, node, columnValue, units, onColumnSelect) {
- if (condition !== false) {
- columns.push({
- node: (0, _vnode.cloneElement)(node, {
- prefixCls: columnPrefixCls,
- value: columnValue,
- active: activeColumnIndex === columns.length,
- onSelect: onColumnSelect,
- units: units,
- hideDisabledOptions: hideDisabledOptions
- }),
- onSelect: onColumnSelect,
- value: columnValue,
- units: units
- });
- }
- }
- // Hour
- addColumnNode(showHour, (0, _vue.createVNode)(_TimeUnitColumn.default, {
- "key": "hour"
- }, null), hour.value, hours.value, function (num) {
- onSelect(setTime(isPM.value, num, minute.value, second.value), 'mouse');
- });
- // Minute
- addColumnNode(showMinute, (0, _vue.createVNode)(_TimeUnitColumn.default, {
- "key": "minute"
- }, null), minute.value, minutes.value, function (num) {
- onSelect(setTime(isPM.value, hour.value, num, second.value), 'mouse');
- });
- // Second
- addColumnNode(showSecond, (0, _vue.createVNode)(_TimeUnitColumn.default, {
- "key": "second"
- }, null), second.value, seconds.value, function (num) {
- onSelect(setTime(isPM.value, hour.value, minute.value, num), 'mouse');
- });
- // 12 Hours
- var PMIndex = -1;
- if (typeof isPM.value === 'boolean') {
- PMIndex = isPM.value ? 1 : 0;
- }
- addColumnNode(use12Hours === true, (0, _vue.createVNode)(_TimeUnitColumn.default, {
- "key": "12hours"
- }, null), PMIndex, [{
- label: 'AM',
- value: 0,
- disabled: AMPMDisabled.value[0]
- }, {
- label: 'PM',
- value: 1,
- disabled: AMPMDisabled.value[1]
- }], function (num) {
- onSelect(setTime(!!num, hour.value, minute.value, second.value), 'mouse');
- });
- return (0, _vue.createVNode)("div", {
- "class": contentPrefixCls
- }, [columns.map(function (_ref4) {
- var node = _ref4.node;
- return node;
- })]);
- };
- }
- });
- var _default = TimeBody;
- exports.default = _default;
|