@pisell/date-picker 1.0.88 → 1.0.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -141,6 +141,12 @@ var PisellDateRangePicker = function PisellDateRangePicker(props) {
141
141
  setCurrentShortcut(lastConfirmShortcut.current);
142
142
  };
143
143
  var handleOk = function handleOk() {
144
+ var val = getVal();
145
+ if (val.some(function (item) {
146
+ return !item;
147
+ })) {
148
+ return;
149
+ }
144
150
  setOpen(false);
145
151
  onClose === null || onClose === void 0 ? void 0 : onClose();
146
152
  propsOnChange === null || propsOnChange === void 0 ? void 0 : propsOnChange(getVal());
@@ -310,7 +316,9 @@ var PisellDateRangePicker = function PisellDateRangePicker(props) {
310
316
  locale: locale,
311
317
  onChange: handleChange,
312
318
  currentShortcut: currentShortcut,
313
- setCurrentShortcut: setCurrentShortcut
319
+ setCurrentShortcut: setCurrentShortcut,
320
+ disabledDate: disabledDate,
321
+ value: _value
314
322
  },
315
323
  layout: {
316
324
  orientation: "portrait"
@@ -8,7 +8,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
8
8
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
9
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
10
10
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
- import React, { useMemo, useState, useEffect } from 'react';
11
+ import React, { useMemo, useState, useEffect, useRef } from 'react';
12
12
  import { Input } from 'antd';
13
13
  import dayjs from 'dayjs';
14
14
  import BrowserSelect from "../browserSelect";
@@ -25,7 +25,8 @@ var Toolbar = function Toolbar(props) {
25
25
  locale = props.locale,
26
26
  onChange = props.onChange,
27
27
  currentShortcut = props.currentShortcut,
28
- setCurrentShortcut = props.setCurrentShortcut;
28
+ setCurrentShortcut = props.setCurrentShortcut,
29
+ disabledDate = props.disabledDate;
29
30
  var format = locale === 'en' || locale === 'en-US' ? 'DD/MM/YYYY' : 'YYYY/MM/DD';
30
31
  var _useState = useState(''),
31
32
  _useState2 = _slicedToArray(_useState, 2),
@@ -43,6 +44,8 @@ var Toolbar = function Toolbar(props) {
43
44
  _useState8 = _slicedToArray(_useState7, 2),
44
45
  endError = _useState8[0],
45
46
  setEndError = _useState8[1];
47
+ var valueRef = useRef(value);
48
+ valueRef.current = value;
46
49
  useEffect(function () {
47
50
  if (value !== null && value !== void 0 && value[0]) {
48
51
  setStartStr(value[0].format(format));
@@ -57,10 +60,22 @@ var Toolbar = function Toolbar(props) {
57
60
  setEndStr('');
58
61
  }
59
62
  }, [value]);
63
+ var checkDateDisabled = function checkDateDisabled(position) {
64
+ var val = valueRef.current;
65
+ if (position === 'start' && val[0] && disabledDate !== null && disabledDate !== void 0 && disabledDate(val[1], position, val)) {
66
+ setStartError(true);
67
+ onChange([null, val[1]], 'write');
68
+ }
69
+ if (position === 'end' && val[1] && disabledDate !== null && disabledDate !== void 0 && disabledDate(val[1], position, val)) {
70
+ setEndError(true);
71
+ onChange([val[0], null], 'write');
72
+ }
73
+ };
60
74
  var handleStartChange = function handleStartChange(e) {
61
75
  var val = e.target.value;
62
76
  setStartStr(val);
63
- if (isValidDate(val, format) && (value[1] ? dayjs(val, format) <= value[1] : true)) {
77
+ var objValue = dayjs(val, format);
78
+ if (isValidDate(val, format) && (value[1] ? objValue <= value[1] : true) && !(disabledDate !== null && disabledDate !== void 0 && disabledDate(objValue, 'start', value))) {
64
79
  var _start$set, _start$set$set;
65
80
  setStartError(false);
66
81
  var valDate = dayjs(val, format);
@@ -71,11 +86,15 @@ var Toolbar = function Toolbar(props) {
71
86
  } else {
72
87
  setStartError(true);
73
88
  }
89
+ setTimeout(function () {
90
+ checkDateDisabled('end');
91
+ }, 200);
74
92
  };
75
93
  var handleEndChange = function handleEndChange(e) {
76
94
  var val = e.target.value;
77
95
  setEndStr(val);
78
- if (isValidDate(val, format) && (value[0] ? dayjs(val, format) >= value[0] : true)) {
96
+ var objValue = dayjs(val, format);
97
+ if (isValidDate(val, format) && (value[0] ? objValue >= value[0] : true) && !(disabledDate !== null && disabledDate !== void 0 && disabledDate(objValue, 'end', value))) {
79
98
  var _end$set, _end$set$set;
80
99
  setEndError(false);
81
100
  var valDate = dayjs(val, format);
@@ -86,6 +105,9 @@ var Toolbar = function Toolbar(props) {
86
105
  } else {
87
106
  setEndError(true);
88
107
  }
108
+ setTimeout(function () {
109
+ checkDateDisabled('start');
110
+ }, 200);
89
111
  };
90
112
  var handleSelectChange = function handleSelectChange(e) {
91
113
  var val = e.target.value;
@@ -122,7 +144,7 @@ var Toolbar = function Toolbar(props) {
122
144
  }, /*#__PURE__*/React.createElement("div", {
123
145
  className: "date-picker-toolbar-start-wrap"
124
146
  }, /*#__PURE__*/React.createElement("span", null, getText('toolbar-date-range-shortcut-starting', pLocaleMap[locale])), /*#__PURE__*/React.createElement(Input, {
125
- status: startError ? "error" : "",
147
+ status: startError ? 'error' : '',
126
148
  size: "large",
127
149
  value: startStr,
128
150
  onChange: handleStartChange,
@@ -132,7 +154,7 @@ var Toolbar = function Toolbar(props) {
132
154
  }, getText('toolbar-date-range-invalid-start-date', pLocaleMap[locale]))), /*#__PURE__*/React.createElement("div", {
133
155
  className: "date-picker-toolbar-end-wrap"
134
156
  }, /*#__PURE__*/React.createElement("span", null, getText('toolbar-date-range-shortcut-ending', pLocaleMap[locale])), /*#__PURE__*/React.createElement(Input, {
135
- status: endError ? "error" : "",
157
+ status: endError ? 'error' : '',
136
158
  size: "large",
137
159
  value: endStr,
138
160
  onChange: handleEndChange,
@@ -144,6 +144,10 @@ var PisellDateRangePicker = (props) => {
144
144
  setCurrentShortcut(lastConfirmShortcut.current);
145
145
  };
146
146
  const handleOk = () => {
147
+ const val = getVal();
148
+ if (val.some((item) => !item)) {
149
+ return;
150
+ }
147
151
  setOpen(false);
148
152
  onClose == null ? void 0 : onClose();
149
153
  propsOnChange == null ? void 0 : propsOnChange(getVal());
@@ -305,7 +309,9 @@ var PisellDateRangePicker = (props) => {
305
309
  locale,
306
310
  onChange: handleChange,
307
311
  currentShortcut,
308
- setCurrentShortcut
312
+ setCurrentShortcut,
313
+ disabledDate,
314
+ value: _value
309
315
  },
310
316
  layout: {
311
317
  orientation: "portrait"
@@ -49,13 +49,16 @@ var Toolbar = (props) => {
49
49
  locale,
50
50
  onChange,
51
51
  currentShortcut,
52
- setCurrentShortcut
52
+ setCurrentShortcut,
53
+ disabledDate
53
54
  } = props;
54
55
  const format = locale === "en" || locale === "en-US" ? "DD/MM/YYYY" : "YYYY/MM/DD";
55
56
  const [startStr, setStartStr] = (0, import_react.useState)("");
56
57
  const [endStr, setEndStr] = (0, import_react.useState)("");
57
58
  const [startError, setStartError] = (0, import_react.useState)(false);
58
59
  const [endError, setEndError] = (0, import_react.useState)(false);
60
+ const valueRef = (0, import_react.useRef)(value);
61
+ valueRef.current = value;
59
62
  (0, import_react.useEffect)(() => {
60
63
  if (value == null ? void 0 : value[0]) {
61
64
  setStartStr(value[0].format(format));
@@ -70,11 +73,23 @@ var Toolbar = (props) => {
70
73
  setEndStr("");
71
74
  }
72
75
  }, [value]);
76
+ const checkDateDisabled = (position) => {
77
+ const val = valueRef.current;
78
+ if (position === "start" && val[0] && (disabledDate == null ? void 0 : disabledDate(val[1], position, val))) {
79
+ setStartError(true);
80
+ onChange([null, val[1]], "write");
81
+ }
82
+ if (position === "end" && val[1] && (disabledDate == null ? void 0 : disabledDate(val[1], position, val))) {
83
+ setEndError(true);
84
+ onChange([val[0], null], "write");
85
+ }
86
+ };
73
87
  const handleStartChange = (e) => {
74
88
  var _a, _b;
75
89
  const val = e.target.value;
76
90
  setStartStr(val);
77
- if (isValidDate(val, format) && (value[1] ? (0, import_dayjs.default)(val, format) <= value[1] : true)) {
91
+ const objValue = (0, import_dayjs.default)(val, format);
92
+ if (isValidDate(val, format) && (value[1] ? objValue <= value[1] : true) && !(disabledDate == null ? void 0 : disabledDate(objValue, "start", value))) {
78
93
  setStartError(false);
79
94
  const valDate = (0, import_dayjs.default)(val, format);
80
95
  const newValue = [...value];
@@ -84,12 +99,16 @@ var Toolbar = (props) => {
84
99
  } else {
85
100
  setStartError(true);
86
101
  }
102
+ setTimeout(() => {
103
+ checkDateDisabled("end");
104
+ }, 200);
87
105
  };
88
106
  const handleEndChange = (e) => {
89
107
  var _a, _b;
90
108
  const val = e.target.value;
91
109
  setEndStr(val);
92
- if (isValidDate(val, format) && (value[0] ? (0, import_dayjs.default)(val, format) >= value[0] : true)) {
110
+ const objValue = (0, import_dayjs.default)(val, format);
111
+ if (isValidDate(val, format) && (value[0] ? objValue >= value[0] : true) && !(disabledDate == null ? void 0 : disabledDate(objValue, "end", value))) {
93
112
  setEndError(false);
94
113
  const valDate = (0, import_dayjs.default)(val, format);
95
114
  const newValue = [...value];
@@ -99,6 +118,9 @@ var Toolbar = (props) => {
99
118
  } else {
100
119
  setEndError(true);
101
120
  }
121
+ setTimeout(() => {
122
+ checkDateDisabled("start");
123
+ }, 200);
102
124
  };
103
125
  const handleSelectChange = (e) => {
104
126
  const val = e.target.value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/date-picker",
3
- "version": "1.0.88",
3
+ "version": "1.0.90",
4
4
  "sideEffects": [
5
5
  "*.less"
6
6
  ],
@@ -26,7 +26,7 @@
26
26
  "antd": "^5.5.0",
27
27
  "react": "^18.0.0",
28
28
  "react-dom": "^18.0.0",
29
- "@pisell/utils": "1.0.27"
29
+ "@pisell/utils": "1.0.28"
30
30
  },
31
31
  "files": [
32
32
  "es",