@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.
- package/Component-50136800.d.ts +183 -3
- package/Component-5684a67d.d.ts +23 -0
- package/Component-63dec22f.d.ts +12 -155
- package/Component-e2b6c730.d.ts +76 -0
- package/Component.desktop-8b5756fe.d.ts +5 -68
- package/Component.desktop-ebda875c.d.ts +6 -0
- package/components/date-range-input/Component.d.ts +1 -1
- package/components/date-range-input/Component.js +3 -5
- package/components/date-range-input/index.css +7 -7
- package/cssm/Component-63dec22f.d.ts +18 -1
- package/cssm/components/date-range-input/Component.js +2 -4
- package/cssm/types-1b036d4b.d.ts +13 -0
- package/cssm/useSkeleton-1b036d4b.d.ts +40 -0
- package/desktop-8b5756fe.d.ts +2 -0
- package/esm/Component-63dec22f.d.ts +18 -1
- package/esm/components/date-range-input/Component.js +3 -5
- package/esm/components/date-range-input/index.css +7 -7
- package/esm/types-1b036d4b.d.ts +13 -0
- package/esm/useSkeleton-1b036d4b.d.ts +40 -0
- package/index-9211a437.d.ts +1 -1
- package/index-ebda875c.d.ts +115 -15
- package/index-f034f741.d.ts +2 -80
- package/mobile-c219f8ca.d.ts +367 -1
- package/modern/Component-63dec22f.d.ts +18 -1
- package/modern/components/date-range-input/Component.js +3 -5
- package/modern/components/date-range-input/index.css +7 -7
- package/modern/types-1b036d4b.d.ts +13 -0
- package/modern/useSkeleton-1b036d4b.d.ts +40 -0
- package/package.json +2 -2
- package/src/components/date-range-input/Component.tsx +2 -4
- package/types-1b036d4b.d.ts +13 -0
- package/useSkeleton-1b036d4b.d.ts +40 -0
- package/utils-e0a54580.d.ts +8 -0
- package/Component-8b5756fe.d.ts +0 -388
- package/Component.mobile-ebda875c.d.ts +0 -6
- /package/{Component.responsive-2e2b2125.d.ts → Component.responsive-755fbaa3.d.ts} +0 -0
package/mobile-c219f8ca.d.ts
CHANGED
|
@@ -1 +1,367 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/// <reference types="react-transition-group" />
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { ReactNode, FC, KeyboardEvent, MouseEvent, MutableRefObject, Ref, RefObject } from "react";
|
|
5
|
+
import { CalendarDesktopProps } from "./Component.desktop-8b5756fe";
|
|
6
|
+
import { TransitionProps } from "react-transition-group/Transition";
|
|
7
|
+
import { CSSTransitionClassNames } from "react-transition-group/CSSTransition";
|
|
8
|
+
import { NavigationBarProps } from "./types-83e2bd9e";
|
|
9
|
+
type CalendarMobileProps = CalendarDesktopProps & {
|
|
10
|
+
/**
|
|
11
|
+
* Управление видимостью модалки
|
|
12
|
+
*/
|
|
13
|
+
open: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Заголовок календаря
|
|
16
|
+
*/
|
|
17
|
+
title?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Обработчик закрытия модалки
|
|
20
|
+
*/
|
|
21
|
+
onClose?: () => void;
|
|
22
|
+
/**
|
|
23
|
+
* Обработчик клика на название месяца в мобильном календаре
|
|
24
|
+
*/
|
|
25
|
+
onMonthTitleClick?: (event: React.MouseEvent<HTMLSpanElement>) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Количество лет для генерации в обе стороны от текущего года
|
|
28
|
+
*/
|
|
29
|
+
yearsAmount?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Нужно ли рендерить шапку
|
|
32
|
+
*/
|
|
33
|
+
hasHeader?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Разрешить выбор из недозаполненного диапазона дат.
|
|
36
|
+
*/
|
|
37
|
+
allowSelectionFromEmptyRange?: boolean;
|
|
38
|
+
};
|
|
39
|
+
declare const CalendarMobile: React.ForwardRefExoticComponent<CalendarDesktopProps & {
|
|
40
|
+
open: boolean;
|
|
41
|
+
title?: string | undefined;
|
|
42
|
+
onClose?: (() => void) | undefined;
|
|
43
|
+
onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement>) => void) | undefined;
|
|
44
|
+
yearsAmount?: number | undefined;
|
|
45
|
+
hasHeader?: boolean | undefined;
|
|
46
|
+
allowSelectionFromEmptyRange?: boolean | undefined;
|
|
47
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
48
|
+
type BackdropProps = Partial<TransitionProps> & {
|
|
49
|
+
/**
|
|
50
|
+
* Прозрачный бэкдроп
|
|
51
|
+
*/
|
|
52
|
+
invisible?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Управляет видимостью компонента
|
|
55
|
+
*/
|
|
56
|
+
open: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Обработчик клика по бэкдропу
|
|
59
|
+
*/
|
|
60
|
+
onClose?: (event: MouseEvent<HTMLElement>) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Дополнительный класс
|
|
63
|
+
*/
|
|
64
|
+
className?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Классы анимации
|
|
67
|
+
*
|
|
68
|
+
* http://reactcommunity.org/react-transition-group/css-transition#CSSTransition-prop-classNames
|
|
69
|
+
*/
|
|
70
|
+
transitionClassNames?: string | CSSTransitionClassNames;
|
|
71
|
+
/**
|
|
72
|
+
* Идентификатор для систем автоматизированного тестирования
|
|
73
|
+
*/
|
|
74
|
+
dataTestId?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Дочерние элементы.
|
|
77
|
+
*/
|
|
78
|
+
children?: ReactNode;
|
|
79
|
+
};
|
|
80
|
+
type PortalProps = {
|
|
81
|
+
/** Контент */
|
|
82
|
+
children?: ReactNode;
|
|
83
|
+
/**
|
|
84
|
+
* Функция, возвращающая контейнер, в который будут рендериться дочерние элементы
|
|
85
|
+
*/
|
|
86
|
+
getPortalContainer?: () => Element;
|
|
87
|
+
/**
|
|
88
|
+
* Немедленно отрендерить дочерние элементы (false - контент будет отрендерен на след. рендер).
|
|
89
|
+
*/
|
|
90
|
+
immediateMount?: boolean;
|
|
91
|
+
};
|
|
92
|
+
type BaseModalProps = {
|
|
93
|
+
/**
|
|
94
|
+
* Контент
|
|
95
|
+
*/
|
|
96
|
+
children?: ReactNode;
|
|
97
|
+
/**
|
|
98
|
+
* Компонент бэкдропа
|
|
99
|
+
*/
|
|
100
|
+
Backdrop?: FC<BackdropProps>;
|
|
101
|
+
/**
|
|
102
|
+
* Свойства для Бэкдропа
|
|
103
|
+
*/
|
|
104
|
+
backdropProps?: Partial<BackdropProps> & Record<string, unknown>;
|
|
105
|
+
/**
|
|
106
|
+
* Нода, компонент или функция возвращающая их
|
|
107
|
+
*
|
|
108
|
+
* Контейнер к которому будут добавляться порталы
|
|
109
|
+
*/
|
|
110
|
+
container?: PortalProps["getPortalContainer"];
|
|
111
|
+
/**
|
|
112
|
+
* Отключает автоматический перевод фокуса на модалку при открытии
|
|
113
|
+
* @default false
|
|
114
|
+
*/
|
|
115
|
+
disableAutoFocus?: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Отключает ловушку фокуса
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
120
|
+
disableFocusLock?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Отключает восстановление фокуса на предыдущем элементе после закрытия модалки
|
|
123
|
+
* @default false
|
|
124
|
+
*/
|
|
125
|
+
disableRestoreFocus?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Отключает вызов `callback` при нажатии Escape
|
|
128
|
+
* @default false
|
|
129
|
+
*/
|
|
130
|
+
disableEscapeKeyDown?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Отключает вызов `callback` при клике на бэкдроп
|
|
133
|
+
* @default false
|
|
134
|
+
*/
|
|
135
|
+
disableBackdropClick?: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Отключает блокировку скролла при открытии модального окна
|
|
138
|
+
* @default false
|
|
139
|
+
*/
|
|
140
|
+
disableBlockingScroll?: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Содержимое модалки всегда в DOM
|
|
143
|
+
* @default false
|
|
144
|
+
*/
|
|
145
|
+
keepMounted?: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Управление видимостью модалки
|
|
148
|
+
*/
|
|
149
|
+
open: boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Дополнительный класс
|
|
152
|
+
*/
|
|
153
|
+
className?: string;
|
|
154
|
+
/**
|
|
155
|
+
* Дополнительный класс
|
|
156
|
+
*/
|
|
157
|
+
contentClassName?: string;
|
|
158
|
+
/**
|
|
159
|
+
* Дополнительные пропсы на обертку контента
|
|
160
|
+
*/
|
|
161
|
+
contentProps?: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
|
|
162
|
+
/**
|
|
163
|
+
* Дополнительные пропсы на компонентную обертку контента
|
|
164
|
+
*/
|
|
165
|
+
componentDivProps?: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
|
|
166
|
+
/**
|
|
167
|
+
* Дополнительный класс для обертки (Modal)
|
|
168
|
+
*/
|
|
169
|
+
wrapperClassName?: string;
|
|
170
|
+
/**
|
|
171
|
+
* Обработчик скролла контента
|
|
172
|
+
*/
|
|
173
|
+
scrollHandler?: "wrapper" | "content" | MutableRefObject<HTMLDivElement | null>;
|
|
174
|
+
/**
|
|
175
|
+
* Пропсы для анимации (CSSTransition)
|
|
176
|
+
*/
|
|
177
|
+
transitionProps?: Partial<TransitionProps>;
|
|
178
|
+
/**
|
|
179
|
+
* Рендерить ли в контейнер через портал.
|
|
180
|
+
* @default true
|
|
181
|
+
*/
|
|
182
|
+
usePortal?: boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Обработчик события нажатия на бэкдроп
|
|
185
|
+
*/
|
|
186
|
+
onBackdropClick?: (event: MouseEvent) => void;
|
|
187
|
+
/**
|
|
188
|
+
* Обработчик события нажатия на Escape
|
|
189
|
+
*
|
|
190
|
+
* Если `disableEscapeKeyDown` - false и модальное окно в фокусе
|
|
191
|
+
*/
|
|
192
|
+
onEscapeKeyDown?: (event: KeyboardEvent) => void;
|
|
193
|
+
/**
|
|
194
|
+
* Обработчик закрытия
|
|
195
|
+
*/
|
|
196
|
+
onClose?: (event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>, reason?: "backdropClick" | "escapeKeyDown" | "closerClick") => void;
|
|
197
|
+
/**
|
|
198
|
+
* Обработчик события onEntered компонента Transition
|
|
199
|
+
*/
|
|
200
|
+
onMount?: () => void;
|
|
201
|
+
/**
|
|
202
|
+
* Обработчик события onExited компонента Transition
|
|
203
|
+
*/
|
|
204
|
+
onUnmount?: () => void;
|
|
205
|
+
/**
|
|
206
|
+
* Идентификатор для систем автоматизированного тестирования
|
|
207
|
+
*/
|
|
208
|
+
dataTestId?: string;
|
|
209
|
+
/**
|
|
210
|
+
* z-index компонента
|
|
211
|
+
*/
|
|
212
|
+
zIndex?: number;
|
|
213
|
+
/**
|
|
214
|
+
* Реф, который должен быть установлен компонентной области
|
|
215
|
+
*/
|
|
216
|
+
componentRef?: MutableRefObject<HTMLDivElement | null>;
|
|
217
|
+
};
|
|
218
|
+
type BaseModalContext = {
|
|
219
|
+
parentRef: React.RefObject<HTMLDivElement>;
|
|
220
|
+
componentRef: React.RefObject<HTMLDivElement>;
|
|
221
|
+
hasFooter?: boolean;
|
|
222
|
+
hasHeader?: boolean;
|
|
223
|
+
hasScroll?: boolean;
|
|
224
|
+
headerHighlighted?: boolean;
|
|
225
|
+
footerHighlighted?: boolean;
|
|
226
|
+
headerOffset?: number;
|
|
227
|
+
setHeaderOffset: (offset: number) => void;
|
|
228
|
+
contentRef: Ref<HTMLElement>;
|
|
229
|
+
setHasHeader: (exists: boolean) => void;
|
|
230
|
+
setHasFooter: (exists: boolean) => void;
|
|
231
|
+
onClose: Required<BaseModalProps>["onClose"];
|
|
232
|
+
};
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
234
|
+
declare const BaseModalContext: React.Context<BaseModalContext>;
|
|
235
|
+
type ModalDesktopProps = BaseModalProps & {
|
|
236
|
+
/**
|
|
237
|
+
* Ширина модального окна
|
|
238
|
+
* @default "m"
|
|
239
|
+
*/
|
|
240
|
+
size?: "s" | "m" | "l" | "xl" | "fullscreen";
|
|
241
|
+
/**
|
|
242
|
+
* Растягивает модальное окно на весь экран
|
|
243
|
+
* @deprecated Используйте размер fullscreen
|
|
244
|
+
*/
|
|
245
|
+
fullscreen?: boolean;
|
|
246
|
+
/**
|
|
247
|
+
* Фиксирует позицию модального окна после открытия,
|
|
248
|
+
* предотвращая скачки, если контент внутри будет меняться
|
|
249
|
+
*/
|
|
250
|
+
fixedPosition?: boolean;
|
|
251
|
+
/**
|
|
252
|
+
* Управление наличием закрывающего крестика
|
|
253
|
+
* @default false
|
|
254
|
+
*/
|
|
255
|
+
hasCloser?: boolean;
|
|
256
|
+
};
|
|
257
|
+
type ModalMobileProps = Omit<ModalDesktopProps, "size" | "fixedPosition" | "fullscreen">;
|
|
258
|
+
type View = "desktop" | "mobile";
|
|
259
|
+
type TResponsiveModalContext = {
|
|
260
|
+
view: View;
|
|
261
|
+
size: NonNullable<ModalDesktopProps["size"]>;
|
|
262
|
+
};
|
|
263
|
+
type ContentProps = {
|
|
264
|
+
/**
|
|
265
|
+
* Контент
|
|
266
|
+
*/
|
|
267
|
+
children?: ReactNode;
|
|
268
|
+
/**
|
|
269
|
+
* Дополнительный класс
|
|
270
|
+
*/
|
|
271
|
+
className?: string;
|
|
272
|
+
/**
|
|
273
|
+
* Растягивает контент на всю высоту
|
|
274
|
+
*/
|
|
275
|
+
flex?: boolean;
|
|
276
|
+
};
|
|
277
|
+
type HeaderProps = Omit<NavigationBarProps, "size" | "view" | "parentRef">;
|
|
278
|
+
type FooterProps = {
|
|
279
|
+
/**
|
|
280
|
+
* Контент футера
|
|
281
|
+
*/
|
|
282
|
+
children?: ReactNode;
|
|
283
|
+
/**
|
|
284
|
+
* Дополнительный класс
|
|
285
|
+
*/
|
|
286
|
+
className?: string;
|
|
287
|
+
/**
|
|
288
|
+
* Фиксирует футер
|
|
289
|
+
*/
|
|
290
|
+
sticky?: boolean;
|
|
291
|
+
/**
|
|
292
|
+
* Выравнивание элементов футера
|
|
293
|
+
*/
|
|
294
|
+
layout?: "start" | "center" | "space-between" | "column";
|
|
295
|
+
/**
|
|
296
|
+
* Отступы между элементами футера
|
|
297
|
+
*/
|
|
298
|
+
gap?: 16 | 24 | 32;
|
|
299
|
+
};
|
|
300
|
+
declare const ModalMobile: React.ForwardRefExoticComponent<ModalMobileProps & React.RefAttributes<HTMLDivElement>> & {
|
|
301
|
+
Content: React.FC<ContentProps>;
|
|
302
|
+
Header: React.FC<HeaderProps>;
|
|
303
|
+
Footer: React.FC<FooterProps>;
|
|
304
|
+
};
|
|
305
|
+
declare const Content: FC<ContentProps>;
|
|
306
|
+
declare const ResponsiveContext: React.Context<TResponsiveModalContext>;
|
|
307
|
+
declare const Modal: React.ForwardRefExoticComponent<BaseModalProps & {
|
|
308
|
+
size?: "s" | "m" | "l" | "xl" | "fullscreen" | undefined;
|
|
309
|
+
fullscreen?: boolean | undefined;
|
|
310
|
+
fixedPosition?: boolean | undefined;
|
|
311
|
+
hasCloser?: boolean | undefined;
|
|
312
|
+
} & {
|
|
313
|
+
view: View;
|
|
314
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
315
|
+
declare const ModalContext: import("react").Context<BaseModalContext>;
|
|
316
|
+
/**
|
|
317
|
+
* Набор констант для z-index соответствующих классов компонентов.
|
|
318
|
+
* Значения выбраны по приоритету.
|
|
319
|
+
*/
|
|
320
|
+
declare const stackingOrder: {
|
|
321
|
+
FOCUSED: number;
|
|
322
|
+
DEFAULT: number;
|
|
323
|
+
POPOVER: number;
|
|
324
|
+
MODAL: number;
|
|
325
|
+
TOAST: number;
|
|
326
|
+
};
|
|
327
|
+
declare const StackingContext: import("react").Context<number>;
|
|
328
|
+
type StackProps = {
|
|
329
|
+
/**
|
|
330
|
+
* Render prop, в который передается функция.
|
|
331
|
+
* Функция принимает аргумент со значением z-index из текущего контекста.
|
|
332
|
+
*/
|
|
333
|
+
children: (value: number) => ReactNode;
|
|
334
|
+
/**
|
|
335
|
+
* Исходное значение для z-index.
|
|
336
|
+
* @default 5
|
|
337
|
+
*/
|
|
338
|
+
value?: number;
|
|
339
|
+
};
|
|
340
|
+
declare const Stack: FC<StackProps>;
|
|
341
|
+
declare const PORTAL_CONTAINER_ATTRIBUTE = "alfa-portal-container";
|
|
342
|
+
declare const getDefaultPortalContainer: () => Element;
|
|
343
|
+
declare function setRef<T>(ref: RefObject<T> | ((instance: T | null) => void) | null | undefined, value: T | null): void;
|
|
344
|
+
type SavedStyle = {
|
|
345
|
+
value: string;
|
|
346
|
+
key: string;
|
|
347
|
+
el: HTMLElement;
|
|
348
|
+
};
|
|
349
|
+
type RestoreStyle = {
|
|
350
|
+
container: HTMLElement;
|
|
351
|
+
modals: number;
|
|
352
|
+
styles: SavedStyle[];
|
|
353
|
+
};
|
|
354
|
+
declare class ModalStore {
|
|
355
|
+
private readonly restoreStyles;
|
|
356
|
+
constructor();
|
|
357
|
+
getRestoreStyles: () => RestoreStyle[];
|
|
358
|
+
}
|
|
359
|
+
declare const getModalStore: () => ModalStore;
|
|
360
|
+
declare class GlobalStore {
|
|
361
|
+
private readonly modalStore;
|
|
362
|
+
constructor();
|
|
363
|
+
getModalStore: () => ModalStore;
|
|
364
|
+
}
|
|
365
|
+
export { CalendarMobileProps, CalendarMobile, ModalMobile, ModalMobileProps, Content, ResponsiveContext, Modal, ModalContext, stackingOrder, StackingContext, StackProps, Stack, PORTAL_CONTAINER_ATTRIBUTE, getDefaultPortalContainer, setRef, getModalStore, GlobalStore };
|
|
366
|
+
export * from "./Component.mobile-755fbaa3";
|
|
367
|
+
export type { SavedStyle };
|
|
@@ -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";
|
|
@@ -11,7 +11,7 @@ import { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';
|
|
|
11
11
|
import { parseTimestampToDate, DATE_FORMAT, format, parseDateString, DATE_MASK, isCompleteDateInput, isValid } from '../../utils/format.js';
|
|
12
12
|
import 'date-fns/parse';
|
|
13
13
|
|
|
14
|
-
const styles = {"component":"date-range-
|
|
14
|
+
const 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"};
|
|
15
15
|
require('./index.css')
|
|
16
16
|
|
|
17
17
|
/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */
|
|
@@ -103,7 +103,7 @@ const DateRangeInput = React.forwardRef(({ className, inputClassName, popoverCla
|
|
|
103
103
|
};
|
|
104
104
|
const handleInputKeyDown = (event) => {
|
|
105
105
|
const isCopy = (event.metaKey || event.ctrlKey) && event.key === 'c';
|
|
106
|
-
if (disableUserInput && !isCopy) {
|
|
106
|
+
if (disableUserInput && !isCopy && event.key !== 'Tab') {
|
|
107
107
|
event.preventDefault();
|
|
108
108
|
}
|
|
109
109
|
};
|
|
@@ -179,9 +179,7 @@ const DateRangeInput = React.forwardRef(({ className, inputClassName, popoverCla
|
|
|
179
179
|
resetPeriod();
|
|
180
180
|
};
|
|
181
181
|
const handleCalendarChange = (date) => {
|
|
182
|
-
|
|
183
|
-
updatePeriod(date);
|
|
184
|
-
}
|
|
182
|
+
updatePeriod(date);
|
|
185
183
|
};
|
|
186
184
|
const handleCalendarWrapperMouseDown = (event) => {
|
|
187
185
|
// Не дает инпуту терять фокус при выборе даты
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
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-
|
|
44
|
+
} .date-range-input__component_r7x48 {
|
|
45
45
|
display: inline-block;
|
|
46
46
|
outline: none;
|
|
47
47
|
position: relative;
|
|
48
|
-
} .date-range-
|
|
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-
|
|
53
|
+
} @media (max-width: 374px) { .date-range-input__calendarContainer_r7x48 {
|
|
54
54
|
width: 100%;
|
|
55
55
|
min-width: 288px
|
|
56
56
|
}
|
|
57
|
-
} .date-range-
|
|
57
|
+
} .date-range-input__calendarResponsive_r7x48 {
|
|
58
58
|
width: var(--calendar-width);
|
|
59
|
-
} .date-range-
|
|
59
|
+
} .date-range-input__block_r7x48 {
|
|
60
60
|
width: 100%;
|
|
61
|
-
} .date-range-
|
|
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 };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfalab/core-components-date-range-input",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@alfalab/core-components-input": "^12.0.2",
|
|
39
39
|
"@alfalab/core-components-icon-button": "^6.2.2",
|
|
40
|
-
"@alfalab/core-components-calendar": "^7.0.
|
|
40
|
+
"@alfalab/core-components-calendar": "^7.0.3",
|
|
41
41
|
"@alfalab/core-components-popover": "^6.1.0",
|
|
42
42
|
"@alfalab/hooks": "^1.13.0",
|
|
43
43
|
"@alfalab/icons-glyph": "^2.108.0",
|
|
@@ -319,7 +319,7 @@ export const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputP
|
|
|
319
319
|
const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
|
|
320
320
|
const isCopy = (event.metaKey || event.ctrlKey) && event.key === 'c';
|
|
321
321
|
|
|
322
|
-
if (disableUserInput && !isCopy) {
|
|
322
|
+
if (disableUserInput && !isCopy && event.key !== 'Tab') {
|
|
323
323
|
event.preventDefault();
|
|
324
324
|
}
|
|
325
325
|
};
|
|
@@ -414,9 +414,7 @@ export const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputP
|
|
|
414
414
|
};
|
|
415
415
|
|
|
416
416
|
const handleCalendarChange = (date?: number) => {
|
|
417
|
-
|
|
418
|
-
updatePeriod(date);
|
|
419
|
-
}
|
|
417
|
+
updatePeriod(date);
|
|
420
418
|
};
|
|
421
419
|
|
|
422
420
|
const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {
|
|
@@ -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,8 @@
|
|
|
1
|
+
import { PeriodType } from "./index-f034f741";
|
|
2
|
+
declare const formatPeriod: (valueFrom: Date, valueTo: Date, periodType: PeriodType, showCurrentYear?: boolean) => string;
|
|
3
|
+
declare const getYearSelectorValue: (valueFrom: Date | undefined, showCurrentYear: boolean) => number | "";
|
|
4
|
+
declare const shiftValues: (valueFrom: Date, valueTo: Date, periodType: PeriodType, direction: 'prev' | 'next') => {
|
|
5
|
+
valueFrom: Date;
|
|
6
|
+
valueTo: Date;
|
|
7
|
+
};
|
|
8
|
+
export { formatPeriod, getYearSelectorValue, shiftValues };
|