Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

485 rader
18 KiB

  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = void 0;
  6. var _react = _interopRequireWildcard(require("react"));
  7. var _propTypes = _interopRequireDefault(require("prop-types"));
  8. var _rcTrigger = _interopRequireDefault(require("rc-trigger"));
  9. var _moment = _interopRequireDefault(require("moment"));
  10. var _reactLifecyclesCompat = require("react-lifecycles-compat");
  11. var _classnames = _interopRequireDefault(require("classnames"));
  12. var _Panel = _interopRequireDefault(require("./Panel"));
  13. var _placements = _interopRequireDefault(require("./placements"));
  14. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  15. function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
  16. function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
  17. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  18. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  19. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  20. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  21. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  22. function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
  23. function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
  24. function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
  25. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
  26. function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
  27. 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; }
  28. function noop() {}
  29. function refFn(field, component) {
  30. this[field] = component;
  31. }
  32. var Picker =
  33. /*#__PURE__*/
  34. function (_Component) {
  35. _inherits(Picker, _Component);
  36. function Picker(props) {
  37. var _this;
  38. _classCallCheck(this, Picker);
  39. _this = _possibleConstructorReturn(this, _getPrototypeOf(Picker).call(this, props));
  40. _defineProperty(_assertThisInitialized(_this), "onPanelChange", function (value) {
  41. _this.setValue(value);
  42. });
  43. _defineProperty(_assertThisInitialized(_this), "onAmPmChange", function (ampm) {
  44. var onAmPmChange = _this.props.onAmPmChange;
  45. onAmPmChange(ampm);
  46. });
  47. _defineProperty(_assertThisInitialized(_this), "onClear", function (event) {
  48. event.stopPropagation();
  49. _this.setValue(null);
  50. _this.setOpen(false);
  51. });
  52. _defineProperty(_assertThisInitialized(_this), "onVisibleChange", function (open) {
  53. _this.setOpen(open);
  54. });
  55. _defineProperty(_assertThisInitialized(_this), "onEsc", function () {
  56. _this.setOpen(false);
  57. _this.focus();
  58. });
  59. _defineProperty(_assertThisInitialized(_this), "onKeyDown", function (e) {
  60. if (e.keyCode === 40) {
  61. _this.setOpen(true);
  62. }
  63. });
  64. _this.saveInputRef = refFn.bind(_assertThisInitialized(_this), 'picker');
  65. _this.savePanelRef = refFn.bind(_assertThisInitialized(_this), 'panelInstance');
  66. var defaultOpen = props.defaultOpen,
  67. defaultValue = props.defaultValue,
  68. _props$open = props.open,
  69. _open = _props$open === void 0 ? defaultOpen : _props$open,
  70. _props$value = props.value,
  71. _value = _props$value === void 0 ? defaultValue : _props$value;
  72. _this.state = {
  73. open: _open,
  74. value: _value
  75. };
  76. return _this;
  77. }
  78. _createClass(Picker, [{
  79. key: "setValue",
  80. value: function setValue(value) {
  81. var onChange = this.props.onChange;
  82. if (!('value' in this.props)) {
  83. this.setState({
  84. value: value
  85. });
  86. }
  87. onChange(value);
  88. }
  89. }, {
  90. key: "getFormat",
  91. value: function getFormat() {
  92. var _this$props = this.props,
  93. format = _this$props.format,
  94. showHour = _this$props.showHour,
  95. showMinute = _this$props.showMinute,
  96. showSecond = _this$props.showSecond,
  97. use12Hours = _this$props.use12Hours;
  98. if (format) {
  99. return format;
  100. }
  101. if (use12Hours) {
  102. var fmtString = [showHour ? 'h' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) {
  103. return !!item;
  104. }).join(':');
  105. return fmtString.concat(' a');
  106. }
  107. return [showHour ? 'HH' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) {
  108. return !!item;
  109. }).join(':');
  110. }
  111. }, {
  112. key: "getPanelElement",
  113. value: function getPanelElement() {
  114. var _this$props2 = this.props,
  115. prefixCls = _this$props2.prefixCls,
  116. placeholder = _this$props2.placeholder,
  117. disabledHours = _this$props2.disabledHours,
  118. disabledMinutes = _this$props2.disabledMinutes,
  119. disabledSeconds = _this$props2.disabledSeconds,
  120. hideDisabledOptions = _this$props2.hideDisabledOptions,
  121. inputReadOnly = _this$props2.inputReadOnly,
  122. showHour = _this$props2.showHour,
  123. showMinute = _this$props2.showMinute,
  124. showSecond = _this$props2.showSecond,
  125. defaultOpenValue = _this$props2.defaultOpenValue,
  126. clearText = _this$props2.clearText,
  127. addon = _this$props2.addon,
  128. use12Hours = _this$props2.use12Hours,
  129. focusOnOpen = _this$props2.focusOnOpen,
  130. onKeyDown = _this$props2.onKeyDown,
  131. hourStep = _this$props2.hourStep,
  132. minuteStep = _this$props2.minuteStep,
  133. secondStep = _this$props2.secondStep,
  134. clearIcon = _this$props2.clearIcon;
  135. var value = this.state.value;
  136. return _react["default"].createElement(_Panel["default"], {
  137. clearText: clearText,
  138. prefixCls: "".concat(prefixCls, "-panel"),
  139. ref: this.savePanelRef,
  140. value: value,
  141. inputReadOnly: inputReadOnly,
  142. onChange: this.onPanelChange,
  143. onAmPmChange: this.onAmPmChange,
  144. defaultOpenValue: defaultOpenValue,
  145. showHour: showHour,
  146. showMinute: showMinute,
  147. showSecond: showSecond,
  148. onEsc: this.onEsc,
  149. format: this.getFormat(),
  150. placeholder: placeholder,
  151. disabledHours: disabledHours,
  152. disabledMinutes: disabledMinutes,
  153. disabledSeconds: disabledSeconds,
  154. hideDisabledOptions: hideDisabledOptions,
  155. use12Hours: use12Hours,
  156. hourStep: hourStep,
  157. minuteStep: minuteStep,
  158. secondStep: secondStep,
  159. addon: addon,
  160. focusOnOpen: focusOnOpen,
  161. onKeyDown: onKeyDown,
  162. clearIcon: clearIcon
  163. });
  164. }
  165. }, {
  166. key: "getPopupClassName",
  167. value: function getPopupClassName() {
  168. var _this$props3 = this.props,
  169. showHour = _this$props3.showHour,
  170. showMinute = _this$props3.showMinute,
  171. showSecond = _this$props3.showSecond,
  172. use12Hours = _this$props3.use12Hours,
  173. prefixCls = _this$props3.prefixCls,
  174. popupClassName = _this$props3.popupClassName;
  175. var selectColumnCount = 0;
  176. if (showHour) {
  177. selectColumnCount += 1;
  178. }
  179. if (showMinute) {
  180. selectColumnCount += 1;
  181. }
  182. if (showSecond) {
  183. selectColumnCount += 1;
  184. }
  185. if (use12Hours) {
  186. selectColumnCount += 1;
  187. } // Keep it for old compatibility
  188. return (0, _classnames["default"])(popupClassName, _defineProperty({}, "".concat(prefixCls, "-panel-narrow"), (!showHour || !showMinute || !showSecond) && !use12Hours), "".concat(prefixCls, "-panel-column-").concat(selectColumnCount));
  189. }
  190. }, {
  191. key: "setOpen",
  192. value: function setOpen(open) {
  193. var _this$props4 = this.props,
  194. onOpen = _this$props4.onOpen,
  195. onClose = _this$props4.onClose;
  196. var currentOpen = this.state.open;
  197. if (currentOpen !== open) {
  198. if (!('open' in this.props)) {
  199. this.setState({
  200. open: open
  201. });
  202. }
  203. if (open) {
  204. onOpen({
  205. open: open
  206. });
  207. } else {
  208. onClose({
  209. open: open
  210. });
  211. }
  212. }
  213. }
  214. }, {
  215. key: "focus",
  216. value: function focus() {
  217. this.picker.focus();
  218. }
  219. }, {
  220. key: "blur",
  221. value: function blur() {
  222. this.picker.blur();
  223. }
  224. }, {
  225. key: "renderClearButton",
  226. value: function renderClearButton() {
  227. var _this2 = this;
  228. var value = this.state.value;
  229. var _this$props5 = this.props,
  230. prefixCls = _this$props5.prefixCls,
  231. allowEmpty = _this$props5.allowEmpty,
  232. clearIcon = _this$props5.clearIcon,
  233. clearText = _this$props5.clearText,
  234. disabled = _this$props5.disabled;
  235. if (!allowEmpty || !value || disabled) {
  236. return null;
  237. }
  238. if (_react["default"].isValidElement(clearIcon)) {
  239. var _ref = clearIcon.props || {},
  240. _onClick = _ref.onClick;
  241. return _react["default"].cloneElement(clearIcon, {
  242. onClick: function onClick() {
  243. if (_onClick) _onClick.apply(void 0, arguments);
  244. _this2.onClear.apply(_this2, arguments);
  245. }
  246. });
  247. }
  248. return _react["default"].createElement("a", {
  249. role: "button",
  250. className: "".concat(prefixCls, "-clear"),
  251. title: clearText,
  252. onClick: this.onClear,
  253. tabIndex: 0
  254. }, clearIcon || _react["default"].createElement("i", {
  255. className: "".concat(prefixCls, "-clear-icon")
  256. }));
  257. }
  258. }, {
  259. key: "render",
  260. value: function render() {
  261. var _this$props6 = this.props,
  262. prefixCls = _this$props6.prefixCls,
  263. placeholder = _this$props6.placeholder,
  264. placement = _this$props6.placement,
  265. align = _this$props6.align,
  266. id = _this$props6.id,
  267. disabled = _this$props6.disabled,
  268. transitionName = _this$props6.transitionName,
  269. style = _this$props6.style,
  270. className = _this$props6.className,
  271. getPopupContainer = _this$props6.getPopupContainer,
  272. name = _this$props6.name,
  273. autoComplete = _this$props6.autoComplete,
  274. onFocus = _this$props6.onFocus,
  275. onBlur = _this$props6.onBlur,
  276. autoFocus = _this$props6.autoFocus,
  277. inputReadOnly = _this$props6.inputReadOnly,
  278. inputIcon = _this$props6.inputIcon,
  279. popupStyle = _this$props6.popupStyle;
  280. var _this$state = this.state,
  281. open = _this$state.open,
  282. value = _this$state.value;
  283. var popupClassName = this.getPopupClassName();
  284. return _react["default"].createElement(_rcTrigger["default"], {
  285. prefixCls: "".concat(prefixCls, "-panel"),
  286. popupClassName: popupClassName,
  287. popupStyle: popupStyle,
  288. popup: this.getPanelElement(),
  289. popupAlign: align,
  290. builtinPlacements: _placements["default"],
  291. popupPlacement: placement,
  292. action: disabled ? [] : ['click'],
  293. destroyPopupOnHide: true,
  294. getPopupContainer: getPopupContainer,
  295. popupTransitionName: transitionName,
  296. popupVisible: open,
  297. onPopupVisibleChange: this.onVisibleChange
  298. }, _react["default"].createElement("span", {
  299. className: (0, _classnames["default"])(prefixCls, className),
  300. style: style
  301. }, _react["default"].createElement("input", {
  302. className: "".concat(prefixCls, "-input"),
  303. ref: this.saveInputRef,
  304. type: "text",
  305. placeholder: placeholder,
  306. name: name,
  307. onKeyDown: this.onKeyDown,
  308. disabled: disabled,
  309. value: value && value.format(this.getFormat()) || '',
  310. autoComplete: autoComplete,
  311. onFocus: onFocus,
  312. onBlur: onBlur,
  313. autoFocus: autoFocus,
  314. onChange: noop,
  315. readOnly: !!inputReadOnly,
  316. id: id
  317. }), inputIcon || _react["default"].createElement("span", {
  318. className: "".concat(prefixCls, "-icon")
  319. }), this.renderClearButton()));
  320. }
  321. }], [{
  322. key: "getDerivedStateFromProps",
  323. value: function getDerivedStateFromProps(props, state) {
  324. var newState = {};
  325. if ('value' in props) {
  326. newState.value = props.value;
  327. }
  328. if (props.open !== undefined) {
  329. newState.open = props.open;
  330. }
  331. return Object.keys(newState).length > 0 ? _objectSpread({}, state, {}, newState) : null;
  332. }
  333. }]);
  334. return Picker;
  335. }(_react.Component);
  336. _defineProperty(Picker, "propTypes", {
  337. prefixCls: _propTypes["default"].string,
  338. clearText: _propTypes["default"].string,
  339. value: _propTypes["default"].object,
  340. defaultOpenValue: _propTypes["default"].object,
  341. inputReadOnly: _propTypes["default"].bool,
  342. disabled: _propTypes["default"].bool,
  343. allowEmpty: _propTypes["default"].bool,
  344. defaultValue: _propTypes["default"].object,
  345. open: _propTypes["default"].bool,
  346. defaultOpen: _propTypes["default"].bool,
  347. align: _propTypes["default"].object,
  348. placement: _propTypes["default"].any,
  349. transitionName: _propTypes["default"].string,
  350. getPopupContainer: _propTypes["default"].func,
  351. placeholder: _propTypes["default"].string,
  352. format: _propTypes["default"].string,
  353. showHour: _propTypes["default"].bool,
  354. showMinute: _propTypes["default"].bool,
  355. showSecond: _propTypes["default"].bool,
  356. style: _propTypes["default"].object,
  357. className: _propTypes["default"].string,
  358. popupClassName: _propTypes["default"].string,
  359. popupStyle: _propTypes["default"].object,
  360. disabledHours: _propTypes["default"].func,
  361. disabledMinutes: _propTypes["default"].func,
  362. disabledSeconds: _propTypes["default"].func,
  363. hideDisabledOptions: _propTypes["default"].bool,
  364. onChange: _propTypes["default"].func,
  365. onAmPmChange: _propTypes["default"].func,
  366. onOpen: _propTypes["default"].func,
  367. onClose: _propTypes["default"].func,
  368. onFocus: _propTypes["default"].func,
  369. onBlur: _propTypes["default"].func,
  370. addon: _propTypes["default"].func,
  371. name: _propTypes["default"].string,
  372. autoComplete: _propTypes["default"].string,
  373. use12Hours: _propTypes["default"].bool,
  374. hourStep: _propTypes["default"].number,
  375. minuteStep: _propTypes["default"].number,
  376. secondStep: _propTypes["default"].number,
  377. focusOnOpen: _propTypes["default"].bool,
  378. onKeyDown: _propTypes["default"].func,
  379. autoFocus: _propTypes["default"].bool,
  380. id: _propTypes["default"].string,
  381. inputIcon: _propTypes["default"].node,
  382. clearIcon: _propTypes["default"].node
  383. });
  384. _defineProperty(Picker, "defaultProps", {
  385. clearText: 'clear',
  386. prefixCls: 'rc-time-picker',
  387. defaultOpen: false,
  388. inputReadOnly: false,
  389. style: {},
  390. className: '',
  391. popupClassName: '',
  392. popupStyle: {},
  393. align: {},
  394. defaultOpenValue: (0, _moment["default"])(),
  395. allowEmpty: true,
  396. showHour: true,
  397. showMinute: true,
  398. showSecond: true,
  399. disabledHours: noop,
  400. disabledMinutes: noop,
  401. disabledSeconds: noop,
  402. hideDisabledOptions: false,
  403. placement: 'bottomLeft',
  404. onChange: noop,
  405. onAmPmChange: noop,
  406. onOpen: noop,
  407. onClose: noop,
  408. onFocus: noop,
  409. onBlur: noop,
  410. addon: noop,
  411. use12Hours: false,
  412. focusOnOpen: false,
  413. onKeyDown: noop
  414. });
  415. (0, _reactLifecyclesCompat.polyfill)(Picker);
  416. var _default = Picker;
  417. exports["default"] = _default;