x-ui-design 0.5.73 → 0.5.75
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.
- package/dist/esm/types/components/DatePicker/RangePicker/RangePicker.d.ts +1 -1
- package/dist/esm/types/types/datepicker.d.ts +1 -0
- package/dist/index.esm.js +108 -25
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +108 -25
- package/dist/index.js.map +1 -1
- package/lib/components/DatePicker/DatePicker.tsx +69 -25
- package/lib/components/DatePicker/RangePicker/RangePicker.tsx +76 -14
- package/lib/types/datepicker.ts +1 -0
- package/package.json +1 -1
- package/src/app/page.tsx +50 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TRangePickerProps } from '../../../types/datepicker';
|
|
3
3
|
import './style.css';
|
|
4
|
-
declare const RangePicker: ({ prefixCls, value, onChange, placeholder, disabled, error, format, prefix, allowClear, inputReadOnly, size, picker, locale, disabledDate, onCalendarChange, style, className, separator, defaultValue, bordered }: TRangePickerProps) => React.JSX.Element;
|
|
4
|
+
declare const RangePicker: ({ prefixCls, value, onChange, placeholder, disabled, error, format, prefix, allowClear, inputReadOnly, size, picker, locale, disabledDate, onOpenChange, onCalendarChange, style, className, separator, defaultValue, bordered }: TRangePickerProps) => React.JSX.Element;
|
|
5
5
|
export default RangePicker;
|
|
@@ -33,6 +33,7 @@ export type TDatePickerProps = DefaultProps & {
|
|
|
33
33
|
};
|
|
34
34
|
onChange?: (date: RuleType | RuleType[], dateString: string | string[]) => void;
|
|
35
35
|
onCalendarChange?: (date: RuleType | RuleType[], dateString: string | string[], info: BaseInfo) => void;
|
|
36
|
+
onOpenChange?: (open: boolean) => void;
|
|
36
37
|
getPopupContainer?: (node: HTMLElement) => HTMLElement;
|
|
37
38
|
showToday?: boolean;
|
|
38
39
|
inputReadOnly?: boolean;
|
package/dist/index.esm.js
CHANGED
|
@@ -2029,7 +2029,11 @@ const DatePicker = ({
|
|
|
2029
2029
|
[`${prefixCls}-disabled`]: disabled
|
|
2030
2030
|
}]),
|
|
2031
2031
|
disabled: disabled,
|
|
2032
|
-
onClick:
|
|
2032
|
+
onClick: e => {
|
|
2033
|
+
e.preventDefault();
|
|
2034
|
+
e.stopPropagation();
|
|
2035
|
+
setIsOpen(!isOpen);
|
|
2036
|
+
}
|
|
2033
2037
|
}, prefix || null, /*#__PURE__*/React.createElement("input", {
|
|
2034
2038
|
size: INPUT_SIZE$1,
|
|
2035
2039
|
disabled: disabled,
|
|
@@ -2060,25 +2064,49 @@ const DatePicker = ({
|
|
|
2060
2064
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2061
2065
|
className: `${prefixCls}-nav-buttons`
|
|
2062
2066
|
}, /*#__PURE__*/React.createElement("button", {
|
|
2063
|
-
onClick:
|
|
2067
|
+
onClick: e => {
|
|
2068
|
+
e.preventDefault();
|
|
2069
|
+
e.stopPropagation();
|
|
2070
|
+
setCurrentYear(y => y - 1);
|
|
2071
|
+
}
|
|
2064
2072
|
}, "\xAB"), /*#__PURE__*/React.createElement("button", {
|
|
2065
|
-
onClick:
|
|
2073
|
+
onClick: e => {
|
|
2074
|
+
e.preventDefault();
|
|
2075
|
+
e.stopPropagation();
|
|
2076
|
+
setCurrentMonth(m => m === 0 ? (setCurrentYear(y => y - 1), MONTH_LENGTH) : m - 1);
|
|
2077
|
+
}
|
|
2066
2078
|
}, "\u2039")), /*#__PURE__*/React.createElement("div", {
|
|
2067
2079
|
className: `${prefixCls}-dropdown-selects`
|
|
2068
2080
|
}, /*#__PURE__*/React.createElement("button", {
|
|
2069
2081
|
type: "button",
|
|
2070
2082
|
className: `${prefixCls}-select`,
|
|
2071
|
-
onClick:
|
|
2083
|
+
onClick: e => {
|
|
2084
|
+
e.preventDefault();
|
|
2085
|
+
e.stopPropagation();
|
|
2086
|
+
setViewMode('year');
|
|
2087
|
+
}
|
|
2072
2088
|
}, currentYear), /*#__PURE__*/React.createElement("button", {
|
|
2073
2089
|
type: "button",
|
|
2074
2090
|
className: `${prefixCls}-select`,
|
|
2075
|
-
onClick:
|
|
2091
|
+
onClick: e => {
|
|
2092
|
+
e.preventDefault();
|
|
2093
|
+
e.stopPropagation();
|
|
2094
|
+
setViewMode('month');
|
|
2095
|
+
}
|
|
2076
2096
|
}, localeMonths[currentMonth])), /*#__PURE__*/React.createElement("div", {
|
|
2077
2097
|
className: `${prefixCls}-nav-buttons`
|
|
2078
2098
|
}, /*#__PURE__*/React.createElement("button", {
|
|
2079
|
-
onClick:
|
|
2099
|
+
onClick: e => {
|
|
2100
|
+
e.preventDefault();
|
|
2101
|
+
e.stopPropagation();
|
|
2102
|
+
setCurrentMonth(m => m === MONTH_LENGTH ? (setCurrentYear(y => y + 1), 0) : m + 1);
|
|
2103
|
+
}
|
|
2080
2104
|
}, "\u203A"), /*#__PURE__*/React.createElement("button", {
|
|
2081
|
-
onClick:
|
|
2105
|
+
onClick: e => {
|
|
2106
|
+
e.preventDefault();
|
|
2107
|
+
e.stopPropagation();
|
|
2108
|
+
setCurrentYear(y => y + 1);
|
|
2109
|
+
}
|
|
2082
2110
|
}, "\xBB"))), viewMode === 'day' && /*#__PURE__*/React.createElement("div", {
|
|
2083
2111
|
className: `${prefixCls}-grid day`
|
|
2084
2112
|
}, localeWeekdays.map(day => /*#__PURE__*/React.createElement("div", {
|
|
@@ -2097,7 +2125,11 @@ const DatePicker = ({
|
|
|
2097
2125
|
[`${prefixCls}-selected`]: isSelected,
|
|
2098
2126
|
[`${prefixCls}-other-month`]: !current
|
|
2099
2127
|
}]),
|
|
2100
|
-
onClick:
|
|
2128
|
+
onClick: e => {
|
|
2129
|
+
e.preventDefault();
|
|
2130
|
+
e.stopPropagation();
|
|
2131
|
+
handleSelect(day, month, year);
|
|
2132
|
+
},
|
|
2101
2133
|
disabled: disabledDate?.(new Date(year, month, day), {
|
|
2102
2134
|
from: undefined,
|
|
2103
2135
|
to: undefined
|
|
@@ -2108,7 +2140,9 @@ const DatePicker = ({
|
|
|
2108
2140
|
}, localeMonths.map((m, i) => /*#__PURE__*/React.createElement("button", {
|
|
2109
2141
|
key: i,
|
|
2110
2142
|
className: `${prefixCls}-month`,
|
|
2111
|
-
onClick:
|
|
2143
|
+
onClick: e => {
|
|
2144
|
+
e.preventDefault();
|
|
2145
|
+
e.stopPropagation();
|
|
2112
2146
|
setCurrentMonth(i);
|
|
2113
2147
|
setViewMode('day');
|
|
2114
2148
|
},
|
|
@@ -2123,7 +2157,9 @@ const DatePicker = ({
|
|
|
2123
2157
|
key: year,
|
|
2124
2158
|
className: `${prefixCls}-year`,
|
|
2125
2159
|
disabled: isYearDisabled(year),
|
|
2126
|
-
onClick:
|
|
2160
|
+
onClick: e => {
|
|
2161
|
+
e.preventDefault();
|
|
2162
|
+
e.stopPropagation();
|
|
2127
2163
|
setCurrentYear(year);
|
|
2128
2164
|
setViewMode('month');
|
|
2129
2165
|
}
|
|
@@ -2139,7 +2175,9 @@ const DatePicker = ({
|
|
|
2139
2175
|
from: undefined,
|
|
2140
2176
|
to: undefined
|
|
2141
2177
|
}),
|
|
2142
|
-
onClick:
|
|
2178
|
+
onClick: e => {
|
|
2179
|
+
e.preventDefault();
|
|
2180
|
+
e.stopPropagation();
|
|
2143
2181
|
handleSelect(DateNow.getDate(), DateNow.getMonth(), DateNow.getFullYear());
|
|
2144
2182
|
}
|
|
2145
2183
|
}, locale?.today || 'Today')))));
|
|
@@ -2171,6 +2209,7 @@ const RangePicker = ({
|
|
|
2171
2209
|
picker = 'date',
|
|
2172
2210
|
locale,
|
|
2173
2211
|
disabledDate,
|
|
2212
|
+
onOpenChange,
|
|
2174
2213
|
onCalendarChange,
|
|
2175
2214
|
style = {},
|
|
2176
2215
|
className = '',
|
|
@@ -2195,6 +2234,7 @@ const RangePicker = ({
|
|
|
2195
2234
|
const handleClickOutside = event => {
|
|
2196
2235
|
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
2197
2236
|
setIsOpen(false);
|
|
2237
|
+
onOpenChange?.(false);
|
|
2198
2238
|
}
|
|
2199
2239
|
};
|
|
2200
2240
|
document.addEventListener('mousedown', handleClickOutside);
|
|
@@ -2203,14 +2243,16 @@ const RangePicker = ({
|
|
|
2203
2243
|
const handleSelect = date => {
|
|
2204
2244
|
if (!selectedDates[0] || selectedDates[0] && selectedDates[1]) {
|
|
2205
2245
|
setSelectedDates([date, null]);
|
|
2206
|
-
onCalendarChange?.(date.toUTCString(), formatDate(date), {});
|
|
2246
|
+
onCalendarChange?.([date.toUTCString(), undefined], [formatDate(date)], {});
|
|
2207
2247
|
} else {
|
|
2208
2248
|
const start = selectedDates[0];
|
|
2209
2249
|
const end = date < start ? start : date;
|
|
2210
2250
|
const begin = date < start ? date : start;
|
|
2211
2251
|
setSelectedDates([begin, end]);
|
|
2212
2252
|
onChange?.([begin.toUTCString(), end.toUTCString()], [formatDate(begin), formatDate(end)]);
|
|
2253
|
+
onCalendarChange?.([begin.toUTCString(), end.toUTCString()], [formatDate(begin), formatDate(end)], {});
|
|
2213
2254
|
setIsOpen(false);
|
|
2255
|
+
onOpenChange?.(false);
|
|
2214
2256
|
}
|
|
2215
2257
|
};
|
|
2216
2258
|
const isMonthDisabled = month => {
|
|
@@ -2245,25 +2287,49 @@ const RangePicker = ({
|
|
|
2245
2287
|
}, all || !monthOffset ? /*#__PURE__*/React.createElement("div", {
|
|
2246
2288
|
className: `${prefixCls}-nav-buttons`
|
|
2247
2289
|
}, /*#__PURE__*/React.createElement("button", {
|
|
2248
|
-
onClick:
|
|
2290
|
+
onClick: e => {
|
|
2291
|
+
e.preventDefault();
|
|
2292
|
+
e.stopPropagation();
|
|
2293
|
+
setCurrentYear(y => y - 1);
|
|
2294
|
+
}
|
|
2249
2295
|
}, "\xAB"), /*#__PURE__*/React.createElement("button", {
|
|
2250
|
-
onClick:
|
|
2296
|
+
onClick: e => {
|
|
2297
|
+
e.preventDefault();
|
|
2298
|
+
e.stopPropagation();
|
|
2299
|
+
setCurrentMonth(m => m === 0 ? (setCurrentYear(y => y - 1), MONTH_LENGTH) : m - 1);
|
|
2300
|
+
}
|
|
2251
2301
|
}, "\u2039")) : /*#__PURE__*/React.createElement("span", null), /*#__PURE__*/React.createElement("div", {
|
|
2252
2302
|
className: `${prefixCls}-dropdown-selects`
|
|
2253
2303
|
}, /*#__PURE__*/React.createElement("button", {
|
|
2254
2304
|
type: "button",
|
|
2255
2305
|
className: `${prefixCls}-select`,
|
|
2256
|
-
onClick:
|
|
2306
|
+
onClick: e => {
|
|
2307
|
+
e.preventDefault();
|
|
2308
|
+
e.stopPropagation();
|
|
2309
|
+
setViewMode('year');
|
|
2310
|
+
}
|
|
2257
2311
|
}, baseYear), /*#__PURE__*/React.createElement("button", {
|
|
2258
2312
|
type: "button",
|
|
2259
2313
|
className: `${prefixCls}-select`,
|
|
2260
|
-
onClick:
|
|
2314
|
+
onClick: e => {
|
|
2315
|
+
e.preventDefault();
|
|
2316
|
+
e.stopPropagation();
|
|
2317
|
+
setViewMode('month');
|
|
2318
|
+
}
|
|
2261
2319
|
}, localeMonths[baseMonth])), all || monthOffset ? /*#__PURE__*/React.createElement("div", {
|
|
2262
2320
|
className: `${prefixCls}-nav-buttons`
|
|
2263
2321
|
}, /*#__PURE__*/React.createElement("button", {
|
|
2264
|
-
onClick:
|
|
2322
|
+
onClick: e => {
|
|
2323
|
+
e.preventDefault();
|
|
2324
|
+
e.stopPropagation();
|
|
2325
|
+
setCurrentMonth(m => m === MONTH_LENGTH ? (setCurrentYear(y => y + 1), 0) : m + 1);
|
|
2326
|
+
}
|
|
2265
2327
|
}, "\u203A"), /*#__PURE__*/React.createElement("button", {
|
|
2266
|
-
onClick:
|
|
2328
|
+
onClick: e => {
|
|
2329
|
+
e.preventDefault();
|
|
2330
|
+
e.stopPropagation();
|
|
2331
|
+
setCurrentYear(y => y + 1);
|
|
2332
|
+
}
|
|
2267
2333
|
}, "\xBB")) : /*#__PURE__*/React.createElement("span", null));
|
|
2268
2334
|
};
|
|
2269
2335
|
const renderCalendar = (monthOffset = 0, all) => {
|
|
@@ -2307,8 +2373,16 @@ const RangePicker = ({
|
|
|
2307
2373
|
from: undefined,
|
|
2308
2374
|
to: undefined
|
|
2309
2375
|
}),
|
|
2310
|
-
onClick:
|
|
2311
|
-
|
|
2376
|
+
onClick: e => {
|
|
2377
|
+
e.preventDefault();
|
|
2378
|
+
e.stopPropagation();
|
|
2379
|
+
day && handleSelect(day);
|
|
2380
|
+
},
|
|
2381
|
+
onMouseEnter: e => {
|
|
2382
|
+
e.preventDefault();
|
|
2383
|
+
e.stopPropagation();
|
|
2384
|
+
day && setHoveredDate(day);
|
|
2385
|
+
},
|
|
2312
2386
|
className: clsx([`${prefixCls}-day`, {
|
|
2313
2387
|
[`${prefixCls}-selected`]: isSelected,
|
|
2314
2388
|
[`${prefixCls}-in-range`]: inRange,
|
|
@@ -2321,7 +2395,9 @@ const RangePicker = ({
|
|
|
2321
2395
|
}, localeMonths.map((m, i) => /*#__PURE__*/React.createElement("button", {
|
|
2322
2396
|
key: i,
|
|
2323
2397
|
className: `${prefixCls}-month`,
|
|
2324
|
-
onClick:
|
|
2398
|
+
onClick: e => {
|
|
2399
|
+
e.preventDefault();
|
|
2400
|
+
e.stopPropagation();
|
|
2325
2401
|
setCurrentMonth(i);
|
|
2326
2402
|
setViewMode('day');
|
|
2327
2403
|
},
|
|
@@ -2336,7 +2412,9 @@ const RangePicker = ({
|
|
|
2336
2412
|
key: year,
|
|
2337
2413
|
className: `${prefixCls}-year`,
|
|
2338
2414
|
disabled: isYearDisabled(year),
|
|
2339
|
-
onClick:
|
|
2415
|
+
onClick: e => {
|
|
2416
|
+
e.preventDefault();
|
|
2417
|
+
e.stopPropagation();
|
|
2340
2418
|
setCurrentYear(year);
|
|
2341
2419
|
setViewMode('month');
|
|
2342
2420
|
}
|
|
@@ -2364,19 +2442,24 @@ const RangePicker = ({
|
|
|
2364
2442
|
[`${prefixCls}-disabled`]: disabled
|
|
2365
2443
|
}]),
|
|
2366
2444
|
disabled: disabled,
|
|
2367
|
-
onClick:
|
|
2445
|
+
onClick: e => {
|
|
2446
|
+
e.preventDefault();
|
|
2447
|
+
e.stopPropagation();
|
|
2448
|
+
setIsOpen(!isOpen);
|
|
2449
|
+
onOpenChange?.(!isOpen);
|
|
2450
|
+
}
|
|
2368
2451
|
}, prefix, /*#__PURE__*/React.createElement("input", {
|
|
2369
2452
|
readOnly: inputReadOnly,
|
|
2370
2453
|
className: `${prefixCls}-selected-date`,
|
|
2371
2454
|
placeholder: placeholder[0],
|
|
2372
|
-
value: selectedDates[0] ? formatDate(selectedDates[0]) : ''
|
|
2455
|
+
[inputReadOnly ? 'value' : 'defaultValue']: selectedDates[0] ? formatDate(selectedDates[0]) : ''
|
|
2373
2456
|
}), /*#__PURE__*/React.createElement("span", {
|
|
2374
2457
|
className: `${prefixCls}-range-separator`
|
|
2375
2458
|
}, separator || /*#__PURE__*/React.createElement(DateDistanceIcon, null)), /*#__PURE__*/React.createElement("input", {
|
|
2376
2459
|
readOnly: inputReadOnly,
|
|
2377
2460
|
className: `${prefixCls}-selected-date`,
|
|
2378
2461
|
placeholder: placeholder[1],
|
|
2379
|
-
value: selectedDates[1] ? formatDate(selectedDates[1]) : ''
|
|
2462
|
+
[inputReadOnly ? 'value' : 'defaultValue']: selectedDates[1] ? formatDate(selectedDates[1]) : ''
|
|
2380
2463
|
}), /*#__PURE__*/React.createElement("span", {
|
|
2381
2464
|
className: `${prefixCls}-icon`
|
|
2382
2465
|
}, allowClear && (selectedDates[0] || selectedDates[1]) ? /*#__PURE__*/React.createElement("span", {
|