time-picker.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
  3. import { defineComponent, ref } from 'vue';
  4. import generatePicker from '../date-picker/generatePicker';
  5. import { commonProps, datePickerProps, rangePickerProps } from '../date-picker/generatePicker/props';
  6. import devWarning from '../vc-util/devWarning';
  7. import { useInjectFormItemContext } from '../form/FormItemContext';
  8. import omit from '../_util/omit';
  9. export var timePickerProps = function timePickerProps() {
  10. return {
  11. format: String,
  12. showNow: {
  13. type: Boolean,
  14. default: undefined
  15. },
  16. showHour: {
  17. type: Boolean,
  18. default: undefined
  19. },
  20. showMinute: {
  21. type: Boolean,
  22. default: undefined
  23. },
  24. showSecond: {
  25. type: Boolean,
  26. default: undefined
  27. },
  28. use12Hours: {
  29. type: Boolean,
  30. default: undefined
  31. },
  32. hourStep: Number,
  33. minuteStep: Number,
  34. secondStep: Number,
  35. hideDisabledOptions: {
  36. type: Boolean,
  37. default: undefined
  38. },
  39. popupClassName: String
  40. };
  41. };
  42. function createTimePicker(generateConfig) {
  43. var DatePicker = generatePicker(generateConfig, _objectSpread(_objectSpread({}, timePickerProps()), {}, {
  44. order: {
  45. type: Boolean,
  46. default: true
  47. }
  48. }));
  49. var InternalTimePicker = DatePicker.TimePicker,
  50. InternalRangePicker = DatePicker.RangePicker;
  51. var TimePicker = defineComponent({
  52. name: 'ATimePicker',
  53. inheritAttrs: false,
  54. props: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, commonProps()), datePickerProps()), timePickerProps()), {}, {
  55. addon: {
  56. type: Function
  57. }
  58. }),
  59. slot: ['addon', 'renderExtraFooter', 'suffixIcon', 'clearIcon'],
  60. setup: function setup(props, _ref) {
  61. var slots = _ref.slots,
  62. expose = _ref.expose,
  63. emit = _ref.emit,
  64. attrs = _ref.attrs;
  65. var formItemContext = useInjectFormItemContext();
  66. devWarning(!(slots.addon || props.addon), 'TimePicker', '`addon` is deprecated. Please use `v-slot:renderExtraFooter` instead.');
  67. var pickerRef = ref();
  68. expose({
  69. focus: function focus() {
  70. var _pickerRef$value;
  71. (_pickerRef$value = pickerRef.value) === null || _pickerRef$value === void 0 ? void 0 : _pickerRef$value.focus();
  72. },
  73. blur: function blur() {
  74. var _pickerRef$value2;
  75. (_pickerRef$value2 = pickerRef.value) === null || _pickerRef$value2 === void 0 ? void 0 : _pickerRef$value2.blur();
  76. }
  77. });
  78. var onChange = function onChange(value, dateString) {
  79. emit('update:value', value);
  80. emit('change', value, dateString);
  81. formItemContext.onFieldChange();
  82. };
  83. var onOpenChange = function onOpenChange(open) {
  84. emit('update:open', open);
  85. emit('openChange', open);
  86. };
  87. var onFocus = function onFocus(e) {
  88. emit('focus', e);
  89. };
  90. var onBlur = function onBlur(e) {
  91. emit('blur', e);
  92. formItemContext.onFieldBlur();
  93. };
  94. var onOk = function onOk(value) {
  95. emit('ok', value);
  96. };
  97. return function () {
  98. var _props$id = props.id,
  99. id = _props$id === void 0 ? formItemContext.id.value : _props$id;
  100. //restProps.addon
  101. return _createVNode(InternalTimePicker, _objectSpread(_objectSpread(_objectSpread({}, attrs), omit(props, ['onUpdate:value', 'onUpdate:open'])), {}, {
  102. "id": id,
  103. "dropdownClassName": props.popupClassName,
  104. "mode": undefined,
  105. "ref": pickerRef,
  106. "renderExtraFooter": props.addon || slots.addon || props.renderExtraFooter || slots.renderExtraFooter,
  107. "onChange": onChange,
  108. "onOpenChange": onOpenChange,
  109. "onFocus": onFocus,
  110. "onBlur": onBlur,
  111. "onOk": onOk
  112. }), slots);
  113. };
  114. }
  115. });
  116. var TimeRangePicker = defineComponent({
  117. name: 'ATimeRangePicker',
  118. inheritAttrs: false,
  119. props: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, commonProps()), rangePickerProps()), timePickerProps()), {}, {
  120. order: {
  121. type: Boolean,
  122. default: true
  123. }
  124. }),
  125. slot: ['renderExtraFooter', 'suffixIcon', 'clearIcon'],
  126. setup: function setup(props, _ref2) {
  127. var slots = _ref2.slots,
  128. expose = _ref2.expose,
  129. emit = _ref2.emit,
  130. attrs = _ref2.attrs;
  131. var pickerRef = ref();
  132. var formItemContext = useInjectFormItemContext();
  133. expose({
  134. focus: function focus() {
  135. var _pickerRef$value3;
  136. (_pickerRef$value3 = pickerRef.value) === null || _pickerRef$value3 === void 0 ? void 0 : _pickerRef$value3.focus();
  137. },
  138. blur: function blur() {
  139. var _pickerRef$value4;
  140. (_pickerRef$value4 = pickerRef.value) === null || _pickerRef$value4 === void 0 ? void 0 : _pickerRef$value4.blur();
  141. }
  142. });
  143. var onChange = function onChange(values, dateStrings) {
  144. emit('update:value', values);
  145. emit('change', values, dateStrings);
  146. formItemContext.onFieldChange();
  147. };
  148. var onOpenChange = function onOpenChange(open) {
  149. emit('update:open', open);
  150. emit('openChange', open);
  151. };
  152. var onFocus = function onFocus(e) {
  153. emit('focus', e);
  154. };
  155. var onBlur = function onBlur(e) {
  156. emit('blur', e);
  157. formItemContext.onFieldBlur();
  158. };
  159. var onPanelChange = function onPanelChange(values, modes) {
  160. emit('panelChange', values, modes);
  161. };
  162. var onOk = function onOk(values) {
  163. emit('ok', values);
  164. };
  165. var onCalendarChange = function onCalendarChange(values, dateStrings, info) {
  166. emit('calendarChange', values, dateStrings, info);
  167. };
  168. return function () {
  169. var _props$id2 = props.id,
  170. id = _props$id2 === void 0 ? formItemContext.id.value : _props$id2;
  171. return _createVNode(InternalRangePicker, _objectSpread(_objectSpread(_objectSpread({}, attrs), omit(props, ['onUpdate:open', 'onUpdate:value'])), {}, {
  172. "id": id,
  173. "dropdownClassName": props.popupClassName,
  174. "picker": "time",
  175. "mode": undefined,
  176. "ref": pickerRef,
  177. "onChange": onChange,
  178. "onOpenChange": onOpenChange,
  179. "onFocus": onFocus,
  180. "onBlur": onBlur,
  181. "onPanelChange": onPanelChange,
  182. "onOk": onOk,
  183. "onCalendarChange": onCalendarChange
  184. }), slots);
  185. };
  186. }
  187. });
  188. return {
  189. TimePicker: TimePicker,
  190. TimeRangePicker: TimeRangePicker
  191. };
  192. }
  193. export default createTimePicker;