UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

250 lines (211 loc) 9.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vue = require("vue"); var _omit = _interopRequireDefault(require("omit.js")); var _vcTimePicker = _interopRequireDefault(require("../vc-time-picker")); var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver")); var _BaseMixin = _interopRequireDefault(require("../_util/BaseMixin")); var _warning = _interopRequireDefault(require("../_util/warning")); var _ClockCircleOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/ClockCircleOutlined")); var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CloseCircleFilled")); var _zh_CN = _interopRequireDefault(require("./locale/zh_CN")); var _propsUtil = require("../_util/props-util"); var _initDefaultProps = _interopRequireDefault(require("../_util/props-util/initDefaultProps")); var _vnode = require("../_util/vnode"); var _configProvider = require("../config-provider"); var _momentUtil = require("../_util/moment-util"); var _props2 = require("./props"); var _rangePicker = _interopRequireDefault(require("./range-picker")); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var TimePicker = (0, _vue.defineComponent)({ name: 'ATimePicker', mixins: [_BaseMixin.default], inheritAttrs: false, props: (0, _initDefaultProps.default)((0, _props2.TimePickerProps)(), { align: { offset: [0, -2] }, disabled: false, disabledHours: undefined, disabledMinutes: undefined, disabledSeconds: undefined, hideDisabledOptions: false, placement: 'bottomLeft', transitionName: 'slide-up', focusOnOpen: true, allowClear: true }), emits: ['update:value', 'update:open', 'change', 'openChange', 'focus', 'blur', 'keydown'], setup: function setup() { return { popupRef: null, timePickerRef: null, configProvider: (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider) }; }, data: function data() { var value = this.value, defaultValue = this.defaultValue, valueFormat = this.valueFormat; (0, _momentUtil.checkValidate)('TimePicker', defaultValue, 'defaultValue', valueFormat); (0, _momentUtil.checkValidate)('TimePicker', value, 'value', valueFormat); (0, _warning.default)(!(0, _propsUtil.hasProp)(this, 'allowEmpty'), 'TimePicker', '`allowEmpty` is deprecated. Please use `allowClear` instead.'); return { sValue: (0, _momentUtil.stringToMoment)(value || defaultValue, valueFormat) }; }, watch: { value: function value(val) { (0, _momentUtil.checkValidate)('TimePicker', val, 'value', this.valueFormat); this.setState({ sValue: (0, _momentUtil.stringToMoment)(val, this.valueFormat) }); } }, created: function created() { (0, _vue.provide)('savePopupRef', this.savePopupRef); }, methods: { getDefaultFormat: function getDefaultFormat() { var format = this.format, use12Hours = this.use12Hours; if (format) { return format; } else if (use12Hours) { return 'h:mm:ss a'; } return 'HH:mm:ss'; }, getAllowClear: function getAllowClear() { var _this$$props = this.$props, allowClear = _this$$props.allowClear, allowEmpty = _this$$props.allowEmpty; if ((0, _propsUtil.hasProp)(this, 'allowClear')) { return allowClear; } return allowEmpty; }, getDefaultLocale: function getDefaultLocale() { var defaultLocale = _extends(_extends({}, _zh_CN.default), this.$props.locale); return defaultLocale; }, savePopupRef: function savePopupRef(ref) { this.popupRef = ref; }, saveTimePicker: function saveTimePicker(timePickerRef) { this.timePickerRef = timePickerRef; }, handleChange: function handleChange(value) { if (!(0, _propsUtil.hasProp)(this, 'value')) { this.setState({ sValue: value }); } var _this$format = this.format, format = _this$format === void 0 ? 'HH:mm:ss' : _this$format; var val = this.valueFormat ? (0, _momentUtil.momentToString)(value, this.valueFormat) : value; this.$emit('update:value', val); this.$emit('change', val, value && value.format(format) || ''); }, handleOpenClose: function handleOpenClose(_ref) { var open = _ref.open; this.$emit('update:open', open); this.$emit('openChange', open); }, focus: function focus() { this.timePickerRef.focus(); }, blur: function blur() { this.timePickerRef.blur(); }, renderInputIcon: function renderInputIcon(prefixCls) { var suffixIcon = (0, _propsUtil.getComponent)(this, 'suffixIcon'); suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon; var clockIcon = suffixIcon && (0, _propsUtil.isValidElement)(suffixIcon) && (0, _vnode.cloneElement)(suffixIcon, { class: "".concat(prefixCls, "-clock-icon") }) || (0, _vue.createVNode)(_ClockCircleOutlined.default, { "class": "".concat(prefixCls, "-clock-icon") }, null); return (0, _vue.createVNode)("span", { "class": "".concat(prefixCls, "-icon") }, [clockIcon]); }, renderClearIcon: function renderClearIcon(prefixCls) { var clearIcon = (0, _propsUtil.getComponent)(this, 'clearIcon'); var clearIconPrefixCls = "".concat(prefixCls, "-clear"); if (clearIcon && (0, _propsUtil.isValidElement)(clearIcon)) { return (0, _vnode.cloneElement)(clearIcon, { class: clearIconPrefixCls }); } return (0, _vue.createVNode)(_CloseCircleFilled.default, { "class": clearIconPrefixCls }, null); }, renderTimePicker: function renderTimePicker(locale) { var _pickerClassName; var props = (0, _propsUtil.getOptionProps)(this); props = (0, _omit.default)(props, ['defaultValue', 'suffixIcon', 'allowEmpty', 'allowClear']); var className = this.$attrs.class; var _props = props, customizePrefixCls = _props.prefixCls, getPopupContainer = _props.getPopupContainer, placeholder = _props.placeholder, size = _props.size; var getPrefixCls = this.configProvider.getPrefixCls; var prefixCls = getPrefixCls('time-picker', customizePrefixCls); var format = this.getDefaultFormat(); var pickerClassName = (_pickerClassName = {}, _defineProperty(_pickerClassName, className, className), _defineProperty(_pickerClassName, "".concat(prefixCls, "-").concat(size), !!size), _pickerClassName); var tempAddon = (0, _propsUtil.getComponent)(this, 'addon', {}, false); var pickerAddon = function pickerAddon(panel) { return tempAddon ? (0, _vue.createVNode)("div", { "class": "".concat(prefixCls, "-panel-addon") }, [typeof tempAddon === 'function' ? tempAddon(panel) : tempAddon]) : null; }; var inputIcon = this.renderInputIcon(prefixCls); var clearIcon = this.renderClearIcon(prefixCls); var getContextPopupContainer = this.configProvider.getPopupContainer; var timeProps = _extends(_extends(_extends(_extends({}, (0, _utils.generateShowHourMinuteSecond)(format)), props), this.$attrs), { allowEmpty: this.getAllowClear(), prefixCls: prefixCls, getPopupContainer: getPopupContainer || getContextPopupContainer, format: format, value: this.sValue, placeholder: placeholder === undefined ? locale.placeholder : placeholder, addon: pickerAddon, inputIcon: inputIcon, clearIcon: clearIcon, class: pickerClassName, ref: this.saveTimePicker, onChange: this.handleChange, onOpen: this.handleOpenClose, onClose: this.handleOpenClose }); return (0, _vue.createVNode)(_vcTimePicker.default, timeProps, null); } }, render: function render() { return (0, _vue.createVNode)(_LocaleReceiver.default, { "componentName": "TimePicker", "defaultLocale": this.getDefaultLocale(), "children": this.renderTimePicker }, null); } }); _extends(TimePicker, { RangePicker: _rangePicker.default }); /* istanbul ignore next */ TimePicker.install = function (app) { app.component(TimePicker.name, TimePicker); app.component(_rangePicker.default.name, _rangePicker.default); return app; }; var _default = TimePicker; exports.default = _default;