@astral/ui 1.53.0 → 1.54.0

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.
@@ -57,6 +57,12 @@ describe('DatePicker', () => {
57
57
  const btn = tests_1.screen.getAllByText('9')[0];
58
58
  expect(btn).not.toBeDisabled();
59
59
  }));
60
+ it('Props:maxDate: в пикере выбранной отображается правильная выбранная дата при использовании даты со смещением', () => __awaiter(void 0, void 0, void 0, function* () {
61
+ (0, tests_1.renderWithTheme)((0, jsx_runtime_1.jsx)(DatePicker_1.DatePicker, { value: new Date('2022-12-16T18:59:00Z') }));
62
+ tests_1.fireEvent.focus(tests_1.screen.getByRole('textbox'));
63
+ const selected = tests_1.screen.getAllByText('16')[0].getAttribute('aria-selected');
64
+ expect(selected).toBeTruthy();
65
+ }));
60
66
  it('Props:value: при изменении меняется выбранная дата в календаре', () => __awaiter(void 0, void 0, void 0, function* () {
61
67
  const callbacks = {
62
68
  setValue: () => undefined,
@@ -6,6 +6,7 @@ const counts_1 = require("../../../constants/counts");
6
6
  const date_1 = require("../../../../utils/date");
7
7
  const buildGridItem_1 = require("../../../utils/buildGridItem");
8
8
  const MinMaxDateContext_1 = require("../../../MinMaxDateContext");
9
+ const compareDateDayByUTC_1 = require("../../../utils/compareDateDayByUTC");
9
10
  const MAX_ROWS = 6;
10
11
  const MAX_DAYS_IN_GRID = MAX_ROWS * counts_1.DAYS_IN_WEEK;
11
12
  const useDaysGrid = ({ baseDate, selectedDate, fullSize = false, isMondayFirst = true, }) => {
@@ -80,9 +81,7 @@ const useDaysGrid = ({ baseDate, selectedDate, fullSize = false, isMondayFirst =
80
81
  }
81
82
  grid.push({
82
83
  isOutOfAvailableRange: dateMonth !== month,
83
- selected: !!selectedDate &&
84
- Number(date) >= Number(selectedDate) &&
85
- Number(date) < Number((0, date_1.addDays)(selectedDate, 1)),
84
+ selected: (0, date_1.isDate)(selectedDate) && (0, compareDateDayByUTC_1.compareDateDayByUTC)(selectedDate, date),
86
85
  isCurrent: date.getUTCFullYear() === currentDate.getFullYear() &&
87
86
  date.getUTCDate() === currentDate.getDate() &&
88
87
  date.getUTCMonth() === currentDate.getMonth(),
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description утилита для сравнения двух дат на совпадение дня,
3
+ * пример применения DayPicker, для сравнения выбранной даты и каждой даты в пикере
4
+ */
5
+ export declare const compareDateDayByUTC: (dateA: Date, dateB: Date) => boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compareDateDayByUTC = void 0;
4
+ /**
5
+ * @description утилита для сравнения двух дат на совпадение дня,
6
+ * пример применения DayPicker, для сравнения выбранной даты и каждой даты в пикере
7
+ */
8
+ const compareDateDayByUTC = (dateA, dateB) => dateA.getUTCFullYear() === dateB.getUTCFullYear() &&
9
+ dateA.getUTCMonth() === dateB.getUTCMonth() &&
10
+ dateA.getUTCDate() === dateB.getUTCDate();
11
+ exports.compareDateDayByUTC = compareDateDayByUTC;
@@ -0,0 +1 @@
1
+ export * from './compareDateDayByUTC';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./compareDateDayByUTC"), exports);
@@ -55,6 +55,12 @@ describe('DatePicker', () => {
55
55
  const btn = screen.getAllByText('9')[0];
56
56
  expect(btn).not.toBeDisabled();
57
57
  }));
58
+ it('Props:maxDate: в пикере выбранной отображается правильная выбранная дата при использовании даты со смещением', () => __awaiter(void 0, void 0, void 0, function* () {
59
+ renderWithTheme(_jsx(DatePicker, { value: new Date('2022-12-16T18:59:00Z') }));
60
+ fireEvent.focus(screen.getByRole('textbox'));
61
+ const selected = screen.getAllByText('16')[0].getAttribute('aria-selected');
62
+ expect(selected).toBeTruthy();
63
+ }));
58
64
  it('Props:value: при изменении меняется выбранная дата в календаре', () => __awaiter(void 0, void 0, void 0, function* () {
59
65
  const callbacks = {
60
66
  setValue: () => undefined,
@@ -1,8 +1,9 @@
1
1
  import { useContext, useMemo } from 'react';
2
2
  import { DAYS_IN_WEEK, MONTHS_IN_YEAR } from '../../../constants/counts';
3
- import { DateCompareDeep, addDays, buildIsoDate, isDateOutOfRange, } from '../../../../utils/date';
3
+ import { DateCompareDeep, addDays, buildIsoDate, isDate, isDateOutOfRange, } from '../../../../utils/date';
4
4
  import { buildGridResult } from '../../../utils/buildGridItem';
5
5
  import { MinMaxDateContext } from '../../../MinMaxDateContext';
6
+ import { compareDateDayByUTC } from '../../../utils/compareDateDayByUTC';
6
7
  const MAX_ROWS = 6;
7
8
  const MAX_DAYS_IN_GRID = MAX_ROWS * DAYS_IN_WEEK;
8
9
  export const useDaysGrid = ({ baseDate, selectedDate, fullSize = false, isMondayFirst = true, }) => {
@@ -77,9 +78,7 @@ export const useDaysGrid = ({ baseDate, selectedDate, fullSize = false, isMonday
77
78
  }
78
79
  grid.push({
79
80
  isOutOfAvailableRange: dateMonth !== month,
80
- selected: !!selectedDate &&
81
- Number(date) >= Number(selectedDate) &&
82
- Number(date) < Number(addDays(selectedDate, 1)),
81
+ selected: isDate(selectedDate) && compareDateDayByUTC(selectedDate, date),
83
82
  isCurrent: date.getUTCFullYear() === currentDate.getFullYear() &&
84
83
  date.getUTCDate() === currentDate.getDate() &&
85
84
  date.getUTCMonth() === currentDate.getMonth(),
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description утилита для сравнения двух дат на совпадение дня,
3
+ * пример применения DayPicker, для сравнения выбранной даты и каждой даты в пикере
4
+ */
5
+ export declare const compareDateDayByUTC: (dateA: Date, dateB: Date) => boolean;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @description утилита для сравнения двух дат на совпадение дня,
3
+ * пример применения DayPicker, для сравнения выбранной даты и каждой даты в пикере
4
+ */
5
+ export const compareDateDayByUTC = (dateA, dateB) => dateA.getUTCFullYear() === dateB.getUTCFullYear() &&
6
+ dateA.getUTCMonth() === dateB.getUTCMonth() &&
7
+ dateA.getUTCDate() === dateB.getUTCDate();
@@ -0,0 +1 @@
1
+ export * from './compareDateDayByUTC';
@@ -0,0 +1 @@
1
+ export * from './compareDateDayByUTC';
@@ -2,4 +2,4 @@ import dayjs from 'dayjs';
2
2
  /**
3
3
  * @description функция проверки значения на дату
4
4
  */
5
- export const isDate = (value) => dayjs(value).isValid();
5
+ export const isDate = (value) => Boolean(value) && dayjs(value).isValid();
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@astral/ui",
3
- "version": "1.53.0",
3
+ "version": "1.54.0",
4
4
  "browser": "./esm/index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {
7
- "@astral/icons": "^1.53.0",
7
+ "@astral/icons": "^1.54.0",
8
8
  "@emotion/cache": "11.7.1",
9
9
  "@emotion/react": "11.9.0",
10
10
  "@emotion/server": "11.4.0",
@@ -8,5 +8,5 @@ const dayjs_1 = __importDefault(require("dayjs"));
8
8
  /**
9
9
  * @description функция проверки значения на дату
10
10
  */
11
- const isDate = (value) => (0, dayjs_1.default)(value).isValid();
11
+ const isDate = (value) => Boolean(value) && (0, dayjs_1.default)(value).isValid();
12
12
  exports.isDate = isDate;