@alfalab/core-components-date-range-input 3.0.2 → 3.0.4

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.
Files changed (36) hide show
  1. package/Component-50136800.d.ts +183 -3
  2. package/Component-5684a67d.d.ts +23 -0
  3. package/Component-63dec22f.d.ts +12 -155
  4. package/Component-e2b6c730.d.ts +76 -0
  5. package/Component.desktop-8b5756fe.d.ts +5 -68
  6. package/Component.desktop-ebda875c.d.ts +6 -0
  7. package/components/date-range-input/Component.d.ts +1 -1
  8. package/components/date-range-input/Component.js +3 -5
  9. package/components/date-range-input/index.css +7 -7
  10. package/cssm/Component-63dec22f.d.ts +18 -1
  11. package/cssm/components/date-range-input/Component.js +2 -4
  12. package/cssm/types-1b036d4b.d.ts +13 -0
  13. package/cssm/useSkeleton-1b036d4b.d.ts +40 -0
  14. package/desktop-8b5756fe.d.ts +2 -0
  15. package/esm/Component-63dec22f.d.ts +18 -1
  16. package/esm/components/date-range-input/Component.js +3 -5
  17. package/esm/components/date-range-input/index.css +7 -7
  18. package/esm/types-1b036d4b.d.ts +13 -0
  19. package/esm/useSkeleton-1b036d4b.d.ts +40 -0
  20. package/index-9211a437.d.ts +1 -1
  21. package/index-ebda875c.d.ts +115 -15
  22. package/index-f034f741.d.ts +2 -80
  23. package/mobile-c219f8ca.d.ts +367 -1
  24. package/modern/Component-63dec22f.d.ts +18 -1
  25. package/modern/components/date-range-input/Component.js +3 -5
  26. package/modern/components/date-range-input/index.css +7 -7
  27. package/modern/types-1b036d4b.d.ts +13 -0
  28. package/modern/useSkeleton-1b036d4b.d.ts +40 -0
  29. package/package.json +2 -2
  30. package/src/components/date-range-input/Component.tsx +2 -4
  31. package/types-1b036d4b.d.ts +13 -0
  32. package/useSkeleton-1b036d4b.d.ts +40 -0
  33. package/utils-e0a54580.d.ts +8 -0
  34. package/Component-8b5756fe.d.ts +0 -388
  35. package/Component.mobile-ebda875c.d.ts +0 -6
  36. /package/{Component.responsive-2e2b2125.d.ts → Component.responsive-755fbaa3.d.ts} +0 -0
@@ -117,7 +117,7 @@ var DateRangeInput = React__default.default.forwardRef(function (_a, ref) {
117
117
  };
118
118
  var handleInputKeyDown = function (event) {
119
119
  var isCopy = (event.metaKey || event.ctrlKey) && event.key === 'c';
120
- if (disableUserInput && !isCopy) {
120
+ if (disableUserInput && !isCopy && event.key !== 'Tab') {
121
121
  event.preventDefault();
122
122
  }
123
123
  };
@@ -195,9 +195,7 @@ var DateRangeInput = React__default.default.forwardRef(function (_a, ref) {
195
195
  resetPeriod();
196
196
  };
197
197
  var handleCalendarChange = function (date) {
198
- if (date) {
199
- updatePeriod(date);
200
- }
198
+ updatePeriod(date);
201
199
  };
202
200
  var handleCalendarWrapperMouseDown = function (event) {
203
201
  // Не дает инпуту терять фокус при выборе даты
@@ -0,0 +1,13 @@
1
+ type TextElementType = HTMLParagraphElement | HTMLSpanElement | HTMLDivElement;
2
+ type WidthUnit = number | string;
3
+ type TextSkeletonProps = {
4
+ /**
5
+ * Кол-во строк текста
6
+ */
7
+ rows?: number;
8
+ /**
9
+ * Ширина строки
10
+ */
11
+ width?: WidthUnit | WidthUnit[];
12
+ };
13
+ export { TextElementType, TextSkeletonProps };
@@ -0,0 +1,40 @@
1
+ /// <reference types="react" />
2
+ import React from "react";
3
+ import { ReactNode } from "react";
4
+ import { TextSkeletonProps } from "./types-1b036d4b";
5
+ type SkeletonProps = {
6
+ /**
7
+ * Флаг, явно задающий состояние, при котором контент закрывается прелоадером
8
+ */
9
+ visible?: boolean;
10
+ /**
11
+ * Флаг явного включения анимации скелета
12
+ */
13
+ animate?: boolean;
14
+ /**
15
+ * Дополнительный класс
16
+ */
17
+ className?: string;
18
+ /**
19
+ * Дополнительные инлайн стили
20
+ */
21
+ style?: React.CSSProperties;
22
+ /**
23
+ * Идентификатор для систем автоматизированного тестирования
24
+ */
25
+ dataTestId?: string;
26
+ /**
27
+ * Дочерние элементы.
28
+ */
29
+ children?: ReactNode;
30
+ };
31
+ declare const Skeleton: React.FC<SkeletonProps>;
32
+ type SkeletonProps$0 = {
33
+ wrapperClassName?: string;
34
+ dataTestId?: string;
35
+ };
36
+ declare function useSkeleton(showSkeleton?: boolean, skeletonProps?: TextSkeletonProps): {
37
+ renderSkeleton: (props: SkeletonProps$0) => React.JSX.Element | null;
38
+ textRef: React.RefObject<HTMLElement>;
39
+ };
40
+ export { SkeletonProps, Skeleton, useSkeleton };
@@ -0,0 +1,2 @@
1
+ export * from "./Component.desktop-8b5756fe";
2
+ export {};
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import React from "react";
3
3
  import { FC, ForwardRefExoticComponent, RefAttributes, HTMLAttributes } from "react";
4
+ import { TextElementType, TextSkeletonProps } from "./types-1b036d4b";
4
5
  declare const colors: readonly [
5
6
  "tertiary",
6
7
  "disabled",
@@ -23,7 +24,6 @@ declare const colors: readonly [
23
24
  "static-accent"
24
25
  ];
25
26
  type Color = (typeof colors)[number];
26
- type TextElementType = HTMLParagraphElement | HTMLSpanElement | HTMLDivElement;
27
27
  type NativeProps = HTMLAttributes<HTMLSpanElement>;
28
28
  type TextBaseProps = {
29
29
  /**
@@ -66,6 +66,14 @@ type TextBaseProps = {
66
66
  * Количество строк (не поддерживает IE)
67
67
  */
68
68
  rowLimit?: 1 | 2 | 3;
69
+ /**
70
+ * Показать скелетон
71
+ */
72
+ showSkeleton?: boolean;
73
+ /**
74
+ * Пропы для скелетона
75
+ */
76
+ skeletonProps?: TextSkeletonProps;
69
77
  };
70
78
  type TextPTagProps = Omit<TextBaseProps, "tag" | "defaultMargins"> & {
71
79
  tag?: "p";
@@ -114,6 +122,14 @@ type TitleProps = Omit<NativeProps$0, "color"> & {
114
122
  * Количество строк (не поддерживает IE)
115
123
  */
116
124
  rowLimit?: 1 | 2 | 3;
125
+ /**
126
+ * Показать скелетон
127
+ */
128
+ showSkeleton?: boolean;
129
+ /**
130
+ * Пропы для скелетона
131
+ */
132
+ skeletonProps?: TextSkeletonProps;
117
133
  };
118
134
  type TitleMobileProps = Omit<TitleProps, "defaultMargins">;
119
135
  declare const Typography: {
@@ -165,3 +181,4 @@ interface BackArrowAddonProps extends React.HTMLAttributes<HTMLButtonElement> {
165
181
  declare const BackArrowAddon: React.FC<BackArrowAddonProps>;
166
182
  export { Typography, typographyPresets, TitleResponsive, BackArrowAddonProps, BackArrowAddon };
167
183
  export type { TitleProps, TextProps, Color };
184
+ export * from "./useSkeleton-1b036d4b";
@@ -12,7 +12,7 @@ import { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';
12
12
  import { parseTimestampToDate, DATE_FORMAT, format, parseDateString, DATE_MASK, isCompleteDateInput, isValid } from '../../utils/format.js';
13
13
  import 'date-fns/parse';
14
14
 
15
- var styles = {"component":"date-range-input__component_gnz83","calendarContainer":"date-range-input__calendarContainer_gnz83","calendarResponsive":"date-range-input__calendarResponsive_gnz83","block":"date-range-input__block_gnz83","calendarIcon":"date-range-input__calendarIcon_gnz83"};
15
+ var styles = {"component":"date-range-input__component_r7x48","calendarContainer":"date-range-input__calendarContainer_r7x48","calendarResponsive":"date-range-input__calendarResponsive_r7x48","block":"date-range-input__block_r7x48","calendarIcon":"date-range-input__calendarIcon_r7x48"};
16
16
  require('./index.css')
17
17
 
18
18
  var DateRangeInput = React.forwardRef(function (_a, ref) {
@@ -107,7 +107,7 @@ var DateRangeInput = React.forwardRef(function (_a, ref) {
107
107
  };
108
108
  var handleInputKeyDown = function (event) {
109
109
  var isCopy = (event.metaKey || event.ctrlKey) && event.key === 'c';
110
- if (disableUserInput && !isCopy) {
110
+ if (disableUserInput && !isCopy && event.key !== 'Tab') {
111
111
  event.preventDefault();
112
112
  }
113
113
  };
@@ -185,9 +185,7 @@ var DateRangeInput = React.forwardRef(function (_a, ref) {
185
185
  resetPeriod();
186
186
  };
187
187
  var handleCalendarChange = function (date) {
188
- if (date) {
189
- updatePeriod(date);
190
- }
188
+ updatePeriod(date);
191
189
  };
192
190
  var handleCalendarWrapperMouseDown = function (event) {
193
191
  // Не дает инпуту терять фокус при выборе даты
@@ -1,4 +1,4 @@
1
- /* hash: 108tg */
1
+ /* hash: 19mkh */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-border-secondary: #e9e9eb; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -41,24 +41,24 @@
41
41
  /* marker */
42
42
  } :root {
43
43
  --calendar-popover-border-radius: var(--border-radius-m);
44
- } .date-range-input__component_gnz83 {
44
+ } .date-range-input__component_r7x48 {
45
45
  display: inline-block;
46
46
  outline: none;
47
47
  position: relative;
48
- } .date-range-input__calendarContainer_gnz83 {
48
+ } .date-range-input__calendarContainer_r7x48 {
49
49
  display: inline-block;
50
50
  box-sizing: border-box;
51
51
  border-radius: var(--calendar-popover-border-radius);
52
52
  border: 1px solid var(--color-light-border-secondary)
53
- } @media (max-width: 374px) { .date-range-input__calendarContainer_gnz83 {
53
+ } @media (max-width: 374px) { .date-range-input__calendarContainer_r7x48 {
54
54
  width: 100%;
55
55
  min-width: 288px
56
56
  }
57
- } .date-range-input__calendarResponsive_gnz83 {
57
+ } .date-range-input__calendarResponsive_r7x48 {
58
58
  width: var(--calendar-width);
59
- } .date-range-input__block_gnz83 {
59
+ } .date-range-input__block_r7x48 {
60
60
  width: 100%;
61
- } .date-range-input__calendarIcon_gnz83 {
61
+ } .date-range-input__calendarIcon_r7x48 {
62
62
  margin-right: var(--gap-s-neg);
63
63
  height: 100%;
64
64
  }
@@ -0,0 +1,13 @@
1
+ type TextElementType = HTMLParagraphElement | HTMLSpanElement | HTMLDivElement;
2
+ type WidthUnit = number | string;
3
+ type TextSkeletonProps = {
4
+ /**
5
+ * Кол-во строк текста
6
+ */
7
+ rows?: number;
8
+ /**
9
+ * Ширина строки
10
+ */
11
+ width?: WidthUnit | WidthUnit[];
12
+ };
13
+ export { TextElementType, TextSkeletonProps };
@@ -0,0 +1,40 @@
1
+ /// <reference types="react" />
2
+ import React from "react";
3
+ import { ReactNode } from "react";
4
+ import { TextSkeletonProps } from "./types-1b036d4b";
5
+ type SkeletonProps = {
6
+ /**
7
+ * Флаг, явно задающий состояние, при котором контент закрывается прелоадером
8
+ */
9
+ visible?: boolean;
10
+ /**
11
+ * Флаг явного включения анимации скелета
12
+ */
13
+ animate?: boolean;
14
+ /**
15
+ * Дополнительный класс
16
+ */
17
+ className?: string;
18
+ /**
19
+ * Дополнительные инлайн стили
20
+ */
21
+ style?: React.CSSProperties;
22
+ /**
23
+ * Идентификатор для систем автоматизированного тестирования
24
+ */
25
+ dataTestId?: string;
26
+ /**
27
+ * Дочерние элементы.
28
+ */
29
+ children?: ReactNode;
30
+ };
31
+ declare const Skeleton: React.FC<SkeletonProps>;
32
+ type SkeletonProps$0 = {
33
+ wrapperClassName?: string;
34
+ dataTestId?: string;
35
+ };
36
+ declare function useSkeleton(showSkeleton?: boolean, skeletonProps?: TextSkeletonProps): {
37
+ renderSkeleton: (props: SkeletonProps$0) => React.JSX.Element | null;
38
+ textRef: React.RefObject<HTMLElement>;
39
+ };
40
+ export { SkeletonProps, Skeleton, useSkeleton };
@@ -1,2 +1,2 @@
1
- export { Button } from "./Component.responsive-2e2b2125";
1
+ export { Button } from "./Component.responsive-755fbaa3";
2
2
  export type { ButtonProps } from "./typings-9211a437";
@@ -1,35 +1,135 @@
1
1
  /// <reference types="react" />
2
2
  import React from "react";
3
- import { ButtonHTMLAttributes, ElementType, FC } from "react";
4
- interface CloserProps extends ButtonHTMLAttributes<HTMLButtonElement> {
3
+ import { HTMLAttributes, ReactNode } from "react";
4
+ type StyleColors = {
5
+ default: {
6
+ [key: string]: string;
7
+ };
8
+ inverted: {
9
+ [key: string]: string;
10
+ };
11
+ };
12
+ type BaseFormControlProps = HTMLAttributes<HTMLDivElement> & {
5
13
  /**
6
- * Вид компонента
14
+ * Растягивает компонент на ширину контейнера
7
15
  */
8
- view: "desktop" | "mobile";
16
+ block?: boolean;
17
+ /**
18
+ * Размер компонента
19
+ */
20
+ size?: "s" | "m" | "l" | "xl";
21
+ /**
22
+ * Набор цветов для компонента
23
+ */
24
+ colors?: "default" | "inverted";
25
+ /**
26
+ * Заблокированное состояние
27
+ */
28
+ disabled?: boolean;
29
+ /**
30
+ * Cостояние только для чтения
31
+ */
32
+ readOnly?: boolean;
33
+ /**
34
+ * Заполненное состояние
35
+ */
36
+ filled?: boolean;
37
+ /**
38
+ * Выбранное (фокус) состояние
39
+ */
40
+ focused?: boolean;
41
+ /**
42
+ * Отображение ошибки
43
+ */
44
+ error?: ReactNode | boolean;
45
+ /**
46
+ * Текст подсказки
47
+ */
48
+ hint?: ReactNode;
49
+ /**
50
+ * Лейбл компонента
51
+ */
52
+ label?: ReactNode;
53
+ /**
54
+ * Вид лейбла внутри / снаружи
55
+ */
56
+ labelView?: "inner" | "outer";
57
+ /**
58
+ * Слот слева
59
+ */
60
+ leftAddons?: ReactNode;
61
+ /**
62
+ * Слот справа
63
+ */
64
+ rightAddons?: ReactNode;
65
+ /**
66
+ * Слот под полем
67
+ */
68
+ bottomAddons?: ReactNode;
9
69
  /**
10
70
  * Дополнительный класс
11
71
  */
12
72
  className?: string;
13
73
  /**
14
- * Позиция крестика
74
+ * Дополнительный класс для поля
75
+ */
76
+ fieldClassName?: string;
77
+ /**
78
+ * Дополнительный класс для поля
15
79
  */
16
- align?: "left" | "right";
80
+ inputWrapperClassName?: string;
17
81
  /**
18
- * Фиксирует крестик
82
+ * Дополнительный класс для лейбла
19
83
  */
20
- sticky?: boolean;
84
+ labelClassName?: string;
21
85
  /**
22
- * Иконка
86
+ * Дополнительный класс для аддонов
23
87
  */
24
- icon?: ElementType;
88
+ addonsClassName?: string;
25
89
  /**
26
90
  * Идентификатор для систем автоматизированного тестирования
27
91
  */
28
92
  dataTestId?: string;
29
93
  /**
30
- * Коллбэк закрытия.
94
+ * Компонент поля (инпут, textarea и пр.)
95
+ */
96
+ children?: ReactNode;
97
+ /**
98
+ * Основные стили компонента.
99
+ */
100
+ styles: {
101
+ [key: string]: string;
102
+ };
103
+ /**
104
+ * Стили компонента для default и inverted режима.
31
105
  */
32
- onClose?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, reason?: "backdropClick" | "escapeKeyDown" | "closerClick") => void;
33
- }
34
- declare const Closer: FC<CloserProps>;
35
- export { CloserProps, Closer };
106
+ colorStyles?: StyleColors;
107
+ };
108
+ declare const BaseFormControl: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
109
+ block?: boolean | undefined;
110
+ size?: "s" | "m" | "l" | "xl" | undefined;
111
+ colors?: "default" | "inverted" | undefined;
112
+ disabled?: boolean | undefined;
113
+ readOnly?: boolean | undefined;
114
+ filled?: boolean | undefined;
115
+ focused?: boolean | undefined;
116
+ error?: ReactNode | boolean;
117
+ hint?: ReactNode;
118
+ label?: ReactNode;
119
+ labelView?: "inner" | "outer" | undefined;
120
+ leftAddons?: ReactNode;
121
+ rightAddons?: ReactNode;
122
+ bottomAddons?: ReactNode;
123
+ className?: string | undefined;
124
+ fieldClassName?: string | undefined;
125
+ inputWrapperClassName?: string | undefined;
126
+ labelClassName?: string | undefined;
127
+ addonsClassName?: string | undefined;
128
+ dataTestId?: string | undefined;
129
+ children?: ReactNode;
130
+ styles: {
131
+ [key: string]: string;
132
+ };
133
+ colorStyles?: StyleColors | undefined;
134
+ } & React.RefAttributes<HTMLDivElement>>;
135
+ export { StyleColors, BaseFormControlProps, BaseFormControl };
@@ -1,80 +1,2 @@
1
- import { FC, MouseEvent } from "react";
2
- type PeriodType = "range" | "day" | "week" | "month" | "quarter" | "year";
3
- type PeriodSliderProps = {
4
- /**
5
- * Активная дата или период
6
- */
7
- value?: Date | [
8
- Date,
9
- Date
10
- ];
11
- /**
12
- * Тип периода
13
- */
14
- periodType?: PeriodType;
15
- /**
16
- * Дополнительный класс
17
- */
18
- className?: string;
19
- /**
20
- * Отключает кнопку назад
21
- */
22
- prevArrowDisabled?: boolean;
23
- /**
24
- * Отключает кнопку вперед
25
- */
26
- nextArrowDisabled?: boolean;
27
- /**
28
- * Скрывает заблокированные кнопки
29
- */
30
- hideDisabledArrows?: boolean;
31
- /**
32
- * Возможность выбора месяца и года, если periodType 'month'
33
- */
34
- isMonthAndYearSelectable?: boolean;
35
- /**
36
- * Отображать ли текущий год, если isMonthAndYearSelectable true
37
- */
38
- showCurrentYearSelector?: boolean;
39
- /**
40
- * Функция для форматирование выбранного периода
41
- */
42
- periodFormatter?: (valueFrom: Date, valueTo: Date, periodType: PeriodType) => string;
43
- /**
44
- * Обработчик нажатия кнопки переключения на назад
45
- */
46
- onPrevArrowClick?: (event: MouseEvent<HTMLButtonElement>, payload: {
47
- value: Date;
48
- valueFrom: Date;
49
- valueTo: Date;
50
- periodType: PeriodType;
51
- }) => void;
52
- /**
53
- * Обработчик нажатия кнопки переключения на вперед
54
- */
55
- onNextArrowClick?: (event: MouseEvent<HTMLButtonElement>, payload: {
56
- value: Date;
57
- valueFrom: Date;
58
- valueTo: Date;
59
- periodType: PeriodType;
60
- }) => void;
61
- /**
62
- * Обработчик нажатия на селектор месяца
63
- */
64
- onMonthClick?: (event: MouseEvent<HTMLButtonElement>) => void;
65
- /**
66
- * Обработчик нажатия на селектор года
67
- */
68
- onYearClick?: (event: MouseEvent<HTMLButtonElement>) => void;
69
- /**
70
- * Обработчик нажатия на период
71
- */
72
- onPeriodClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
73
- /**
74
- * Идентификатор для систем автоматизированного тестирования
75
- */
76
- dataTestId?: string;
77
- };
78
- declare const PeriodSlider: FC<PeriodSliderProps>;
79
- export { PeriodType, PeriodSliderProps, PeriodSlider };
80
- export { shiftValues } from "./Component.desktop-8b5756fe";
1
+ export * from "./Component-e2b6c730";
2
+ export { shiftValues } from "./utils-e0a54580";