@pisell/date-picker 1.0.59 → 1.0.60

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.
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import { BaseToolbarProps, ExportedBaseToolbarProps } from '@mui/x-date-pickers/internals';
3
2
  import { DateRange } from '../internals/models';
4
3
  import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
@@ -8,5 +7,5 @@ export interface DateRangePickerToolbarProps<TDate> extends Omit<BaseToolbarProp
8
7
  }
9
8
  export interface ExportedDateRangePickerToolbarProps extends ExportedBaseToolbarProps {
10
9
  }
11
- declare const DateRangePickerToolbar: React.ForwardRefExoticComponent<DateRangePickerToolbarProps<unknown> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const DateRangePickerToolbar: any;
12
11
  export { DateRangePickerToolbar };
@@ -0,0 +1,6 @@
1
+ declare const CloseCircle: (props: {
2
+ size: number;
3
+ className: string;
4
+ onClick: any;
5
+ }) => JSX.Element;
6
+ export default CloseCircle;
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ var CloseCircle = function CloseCircle(props) {
3
+ var size = props.size,
4
+ className = props.className,
5
+ onClick = props.onClick;
6
+ return /*#__PURE__*/React.createElement("span", {
7
+ className: className,
8
+ onClick: onClick
9
+ }, /*#__PURE__*/React.createElement("svg", {
10
+ className: "icon",
11
+ viewBox: "0 0 1024 1024",
12
+ version: "1.1",
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ "p-id": "35105",
15
+ width: size,
16
+ height: size
17
+ }, /*#__PURE__*/React.createElement("path", {
18
+ d: "M938.6496 512a426.6496 426.6496 0 1 1-853.2992 0 426.6496 426.6496 0 0 1 853.2992 0z",
19
+ fill: "currentColor",
20
+ "p-id": "35106"
21
+ }), /*#__PURE__*/React.createElement("path", {
22
+ d: "M717.2096 346.1632a27.8528 27.8528 0 0 0-39.3728-39.3216L512 472.576 346.1632 306.8416a27.8016 27.8016 0 1 0-39.3216 39.3216L472.576 512l-165.7856 165.8368a27.8016 27.8016 0 1 0 39.3216 39.3216l165.888-165.7856 165.7856 165.8368a27.8528 27.8528 0 0 0 39.3216-39.424L551.424 512l165.8368-165.8368z",
23
+ fill: "#FFFFFF",
24
+ "p-id": "35107"
25
+ })));
26
+ };
27
+ export default CloseCircle;
@@ -7,9 +7,9 @@ export interface PisellDateRangePickerProps {
7
7
  /** 再次选择日期时是否清除结束时间 */
8
8
  clearEndOnSelection?: boolean;
9
9
  /** 日期选择确认回调 */
10
- onChange?: (day: Dayjs[]) => void;
10
+ onChange?: (day: (Dayjs | null)[]) => void;
11
11
  /** 日期改变回调 此处只为了组件外拿到当前日期项进行状态操作 通常情况下只使用onChange来拿value */
12
- onDateChange?: (day: Dayjs[]) => void;
12
+ onDateChange?: (day: (Dayjs | null)[]) => void;
13
13
  /** 日期选择值 */
14
14
  value?: Dayjs[];
15
15
  /** 日期选择默认值 */
@@ -61,6 +61,9 @@ export interface PisellDateRangePickerProps {
61
61
  * @example '@media (min-width: 720px)' or theme.breakpoints.up("sm")
62
62
  */
63
63
  desktopModeMediaQuery?: string;
64
+ style?: React.CSSProperties;
65
+ /** 是否展示清除按钮 */
66
+ allowClear?: boolean;
64
67
  }
65
68
  declare const PisellDateRangePicker: (props: PisellDateRangePickerProps) => JSX.Element;
66
69
  export default PisellDateRangePicker;
@@ -11,8 +11,9 @@ import Shortcuts from "../Shortcuts";
11
11
  import { SingleInputDateRangeField } from "../SingleInputDateRangeField";
12
12
  import classNames from "classnames";
13
13
  import { isArr, isBoolean } from "@pisell/utils";
14
- import "./index.less";
15
14
  import useCssVariables from "./useCssVariables";
15
+ import CloseCircle from "./CloseCircle";
16
+ import "./index.less";
16
17
  var transDayjsArr = function transDayjsArr(dayjsArr, defaultValue) {
17
18
  var _newArr;
18
19
  var newArr = dayjsArr || defaultValue;
@@ -53,7 +54,9 @@ var PisellDateRangePicker = function PisellDateRangePicker(props) {
53
54
  okButtonProps = props.okButtonProps,
54
55
  cancelButtonProps = props.cancelButtonProps,
55
56
  onDateChange = props.onDateChange,
56
- desktopModeMediaQuery = props.desktopModeMediaQuery;
57
+ desktopModeMediaQuery = props.desktopModeMediaQuery,
58
+ style = props.style,
59
+ allowClear = props.allowClear;
57
60
  var _useState = useState(propsOpen !== null && propsOpen !== void 0 ? propsOpen : false),
58
61
  _useState2 = _slicedToArray(_useState, 2),
59
62
  open = _useState2[0],
@@ -124,10 +127,32 @@ var PisellDateRangePicker = function PisellDateRangePicker(props) {
124
127
  },
125
128
  dom: document.body
126
129
  });
130
+ var handleClear = function handleClear(e) {
131
+ e.stopPropagation();
132
+ setValue([null, null]);
133
+ setOpen(false);
134
+ onClose === null || onClose === void 0 ? void 0 : onClose();
135
+ propsOnChange === null || propsOnChange === void 0 ? void 0 : propsOnChange([null, null]);
136
+ };
137
+ var endAdornment = useMemo(function () {
138
+ if (!allowClear) {
139
+ return suffixIcon;
140
+ }
141
+ if (_value.some(function (item) {
142
+ return !!item;
143
+ })) {
144
+ return /*#__PURE__*/React.createElement(CloseCircle, {
145
+ size: 24,
146
+ className: "pisell-date-range-picker-clear",
147
+ onClick: handleClear
148
+ });
149
+ }
150
+ }, [suffixIcon, allowClear, _value]);
127
151
  return /*#__PURE__*/React.createElement("span", {
128
152
  className: classNames(className, "pisell-date-range-picker", {
129
153
  "pisell-date-range-picker-no-border": !bordered
130
- })
154
+ }),
155
+ style: style
131
156
  }, /*#__PURE__*/React.createElement(DateRangePicker
132
157
  // defaultValue={defaultValue}
133
158
  // key={`${_value?.[0]?.valueOf()}-${_value?.[1]?.valueOf()}`}
@@ -178,7 +203,7 @@ var PisellDateRangePicker = function PisellDateRangePicker(props) {
178
203
  // variant: "standard",
179
204
  // hiddenLabel: true,
180
205
  InputProps: {
181
- endAdornment: suffixIcon
206
+ endAdornment: endAdornment
182
207
  }
183
208
  },
184
209
  popper: {
@@ -8,6 +8,14 @@
8
8
  label {
9
9
  font-size: 14px;
10
10
  }
11
+ .pisell-date-range-picker-clear {
12
+ color: rgba(0, 0, 0, 0.25);
13
+ cursor: pointer;
14
+ height: 24px;
15
+ :hover {
16
+ color: rgba(0, 0, 0, 0.45);
17
+ }
18
+ }
11
19
  }
12
20
  .pisell-date-range-picker-no-border {
13
21
  .MuiOutlinedInput-notchedOutline {
@@ -17,11 +25,11 @@
17
25
  .MuiOutlinedInput-notchedOutline {
18
26
  legend {
19
27
  color: inherit !important;
20
- width: auto !important;;
21
- margin-bottom: 0.5em !important;;
22
- font-size: 1.5em !important;;
23
- line-height: 11px !important;;
24
- border: none !important;;
28
+ width: auto !important;
29
+ margin-bottom: 0.5em !important;
30
+ font-size: 1.5em !important;
31
+ line-height: 11px !important;
32
+ border: none !important;
25
33
  }
26
34
  }
27
35
 
@@ -30,13 +38,13 @@
30
38
  width: var(--pisell-date-range-picker-popup-width, 625px);
31
39
  .MuiDateRangeCalendar-root {
32
40
  width: 100%;
33
- flex:1;
41
+ flex: 1;
34
42
  .MuiDateRangeCalendar-monthContainer {
35
43
  width: 50%;
36
44
  .MuiDayCalendar-header {
37
45
  padding: 0 20px;
38
46
  .MuiDayCalendar-weekDayLabel {
39
- flex:1;
47
+ flex: 1;
40
48
  width: 100%;
41
49
  }
42
50
  }
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import { BaseToolbarProps, ExportedBaseToolbarProps } from '@mui/x-date-pickers/internals';
3
2
  import { DateRange } from '../internals/models';
4
3
  import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
@@ -8,5 +7,5 @@ export interface DateRangePickerToolbarProps<TDate> extends Omit<BaseToolbarProp
8
7
  }
9
8
  export interface ExportedDateRangePickerToolbarProps extends ExportedBaseToolbarProps {
10
9
  }
11
- declare const DateRangePickerToolbar: React.ForwardRefExoticComponent<DateRangePickerToolbarProps<unknown> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const DateRangePickerToolbar: any;
12
11
  export { DateRangePickerToolbar };
@@ -0,0 +1,6 @@
1
+ declare const CloseCircle: (props: {
2
+ size: number;
3
+ className: string;
4
+ onClick: any;
5
+ }) => JSX.Element;
6
+ export default CloseCircle;
@@ -0,0 +1,67 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/PisellDateRangePicker/CloseCircle.tsx
30
+ var CloseCircle_exports = {};
31
+ __export(CloseCircle_exports, {
32
+ default: () => CloseCircle_default
33
+ });
34
+ module.exports = __toCommonJS(CloseCircle_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var CloseCircle = (props) => {
37
+ const { size, className, onClick } = props;
38
+ return /* @__PURE__ */ import_react.default.createElement("span", { className, onClick }, /* @__PURE__ */ import_react.default.createElement(
39
+ "svg",
40
+ {
41
+ className: "icon",
42
+ viewBox: "0 0 1024 1024",
43
+ version: "1.1",
44
+ xmlns: "http://www.w3.org/2000/svg",
45
+ "p-id": "35105",
46
+ width: size,
47
+ height: size
48
+ },
49
+ /* @__PURE__ */ import_react.default.createElement(
50
+ "path",
51
+ {
52
+ d: "M938.6496 512a426.6496 426.6496 0 1 1-853.2992 0 426.6496 426.6496 0 0 1 853.2992 0z",
53
+ fill: "currentColor",
54
+ "p-id": "35106"
55
+ }
56
+ ),
57
+ /* @__PURE__ */ import_react.default.createElement(
58
+ "path",
59
+ {
60
+ d: "M717.2096 346.1632a27.8528 27.8528 0 0 0-39.3728-39.3216L512 472.576 346.1632 306.8416a27.8016 27.8016 0 1 0-39.3216 39.3216L472.576 512l-165.7856 165.8368a27.8016 27.8016 0 1 0 39.3216 39.3216l165.888-165.7856 165.7856 165.8368a27.8528 27.8528 0 0 0 39.3216-39.424L551.424 512l165.8368-165.8368z",
61
+ fill: "#FFFFFF",
62
+ "p-id": "35107"
63
+ }
64
+ )
65
+ ));
66
+ };
67
+ var CloseCircle_default = CloseCircle;
@@ -7,9 +7,9 @@ export interface PisellDateRangePickerProps {
7
7
  /** 再次选择日期时是否清除结束时间 */
8
8
  clearEndOnSelection?: boolean;
9
9
  /** 日期选择确认回调 */
10
- onChange?: (day: Dayjs[]) => void;
10
+ onChange?: (day: (Dayjs | null)[]) => void;
11
11
  /** 日期改变回调 此处只为了组件外拿到当前日期项进行状态操作 通常情况下只使用onChange来拿value */
12
- onDateChange?: (day: Dayjs[]) => void;
12
+ onDateChange?: (day: (Dayjs | null)[]) => void;
13
13
  /** 日期选择值 */
14
14
  value?: Dayjs[];
15
15
  /** 日期选择默认值 */
@@ -61,6 +61,9 @@ export interface PisellDateRangePickerProps {
61
61
  * @example '@media (min-width: 720px)' or theme.breakpoints.up("sm")
62
62
  */
63
63
  desktopModeMediaQuery?: string;
64
+ style?: React.CSSProperties;
65
+ /** 是否展示清除按钮 */
66
+ allowClear?: boolean;
64
67
  }
65
68
  declare const PisellDateRangePicker: (props: PisellDateRangePickerProps) => JSX.Element;
66
69
  export default PisellDateRangePicker;
@@ -39,8 +39,9 @@ var import_Shortcuts = __toESM(require("../Shortcuts"));
39
39
  var import_SingleInputDateRangeField = require("../SingleInputDateRangeField");
40
40
  var import_classnames = __toESM(require("classnames"));
41
41
  var import_utils = require("@pisell/utils");
42
- var import_index = require("./index.less");
43
42
  var import_useCssVariables = __toESM(require("./useCssVariables"));
43
+ var import_CloseCircle = __toESM(require("./CloseCircle"));
44
+ var import_index = require("./index.less");
44
45
  var transDayjsArr = (dayjsArr, defaultValue) => {
45
46
  let newArr = dayjsArr || defaultValue;
46
47
  if ((dayjsArr == null ? void 0 : dayjsArr.length) === 0) {
@@ -76,7 +77,9 @@ var PisellDateRangePicker = (props) => {
76
77
  okButtonProps,
77
78
  cancelButtonProps,
78
79
  onDateChange,
79
- desktopModeMediaQuery
80
+ desktopModeMediaQuery,
81
+ style,
82
+ allowClear
80
83
  } = props;
81
84
  const [open, setOpen] = (0, import_react.useState)(propsOpen ?? false);
82
85
  (0, import_react.useEffect)(() => {
@@ -141,12 +144,35 @@ var PisellDateRangePicker = (props) => {
141
144
  },
142
145
  dom: document.body
143
146
  });
147
+ const handleClear = (e) => {
148
+ e.stopPropagation();
149
+ setValue([null, null]);
150
+ setOpen(false);
151
+ onClose == null ? void 0 : onClose();
152
+ propsOnChange == null ? void 0 : propsOnChange([null, null]);
153
+ };
154
+ const endAdornment = (0, import_react.useMemo)(() => {
155
+ if (!allowClear) {
156
+ return suffixIcon;
157
+ }
158
+ if (_value.some((item) => !!item)) {
159
+ return /* @__PURE__ */ import_react.default.createElement(
160
+ import_CloseCircle.default,
161
+ {
162
+ size: 24,
163
+ className: "pisell-date-range-picker-clear",
164
+ onClick: handleClear
165
+ }
166
+ );
167
+ }
168
+ }, [suffixIcon, allowClear, _value]);
144
169
  return /* @__PURE__ */ import_react.default.createElement(
145
170
  "span",
146
171
  {
147
172
  className: (0, import_classnames.default)(className, "pisell-date-range-picker", {
148
173
  "pisell-date-range-picker-no-border": !bordered
149
- })
174
+ }),
175
+ style
150
176
  },
151
177
  /* @__PURE__ */ import_react.default.createElement(
152
178
  import_DateRangePicker.DateRangePicker,
@@ -195,7 +221,7 @@ var PisellDateRangePicker = (props) => {
195
221
  // variant: "standard",
196
222
  // hiddenLabel: true,
197
223
  InputProps: {
198
- endAdornment: suffixIcon
224
+ endAdornment
199
225
  }
200
226
  },
201
227
  popper: {
@@ -8,6 +8,14 @@
8
8
  label {
9
9
  font-size: 14px;
10
10
  }
11
+ .pisell-date-range-picker-clear {
12
+ color: rgba(0, 0, 0, 0.25);
13
+ cursor: pointer;
14
+ height: 24px;
15
+ :hover {
16
+ color: rgba(0, 0, 0, 0.45);
17
+ }
18
+ }
11
19
  }
12
20
  .pisell-date-range-picker-no-border {
13
21
  .MuiOutlinedInput-notchedOutline {
@@ -17,11 +25,11 @@
17
25
  .MuiOutlinedInput-notchedOutline {
18
26
  legend {
19
27
  color: inherit !important;
20
- width: auto !important;;
21
- margin-bottom: 0.5em !important;;
22
- font-size: 1.5em !important;;
23
- line-height: 11px !important;;
24
- border: none !important;;
28
+ width: auto !important;
29
+ margin-bottom: 0.5em !important;
30
+ font-size: 1.5em !important;
31
+ line-height: 11px !important;
32
+ border: none !important;
25
33
  }
26
34
  }
27
35
 
@@ -30,13 +38,13 @@
30
38
  width: var(--pisell-date-range-picker-popup-width, 625px);
31
39
  .MuiDateRangeCalendar-root {
32
40
  width: 100%;
33
- flex:1;
41
+ flex: 1;
34
42
  .MuiDateRangeCalendar-monthContainer {
35
43
  width: 50%;
36
44
  .MuiDayCalendar-header {
37
45
  padding: 0 20px;
38
46
  .MuiDayCalendar-weekDayLabel {
39
- flex:1;
47
+ flex: 1;
40
48
  width: 100%;
41
49
  }
42
50
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/date-picker",
3
- "version": "1.0.59",
3
+ "version": "1.0.60",
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.23"
29
+ "@pisell/utils": "1.0.21"
30
30
  },
31
31
  "files": [
32
32
  "es",