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.
@@ -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: () => setIsOpen(!isOpen)
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: () => setCurrentYear(y => y - 1)
2067
+ onClick: e => {
2068
+ e.preventDefault();
2069
+ e.stopPropagation();
2070
+ setCurrentYear(y => y - 1);
2071
+ }
2064
2072
  }, "\xAB"), /*#__PURE__*/React.createElement("button", {
2065
- onClick: () => setCurrentMonth(m => m === 0 ? (setCurrentYear(y => y - 1), MONTH_LENGTH) : m - 1)
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: () => setViewMode('year')
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: () => setViewMode('month')
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: () => setCurrentMonth(m => m === MONTH_LENGTH ? (setCurrentYear(y => y + 1), 0) : m + 1)
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: () => setCurrentYear(y => y + 1)
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: () => handleSelect(day, month, year),
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: () => setCurrentYear(y => y - 1)
2290
+ onClick: e => {
2291
+ e.preventDefault();
2292
+ e.stopPropagation();
2293
+ setCurrentYear(y => y - 1);
2294
+ }
2249
2295
  }, "\xAB"), /*#__PURE__*/React.createElement("button", {
2250
- onClick: () => setCurrentMonth(m => m === 0 ? (setCurrentYear(y => y - 1), MONTH_LENGTH) : m - 1)
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: () => setViewMode('year')
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: () => setViewMode('month')
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: () => setCurrentMonth(m => m === MONTH_LENGTH ? (setCurrentYear(y => y + 1), 0) : m + 1)
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: () => setCurrentYear(y => y + 1)
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: () => day && handleSelect(day),
2311
- onMouseEnter: () => day && setHoveredDate(day),
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: () => setIsOpen(!isOpen)
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", {